MySql - 동일한 테이블에서 문 선택을 사용하여 테이블 업데이트
같은 테이블의 다른 행(및 다른 열)의 값을 사용하여 테이블의 행을 업데이트하려고 합니다.내 구문이 결과를 낳지는 않지만, 이와 같은 맥락에서 뭔가.다음은 코드(업데이트)입니다.
UPDATE table1 AS t1 INNER JOIN
(SELECT field_id_46,field_id_47 FROM table1 WHERE entry_id = 36) AS t2
SET t1.field_id_60 = t2.field_id_46, t1.field_id_61 = t2.field_id_47
WHERE t1.entry_id = 45;
update table as t1
inner join (
select field_id_46,field_id_47 from table where entry_id = 36) as t2
set t1.field_id_60 = t2.field_id_46,
t1.field_id_61 = t2.field_id_47
where t1.entry_id = 45
또는 간단히 말하면
update table as t1,
(
select field_id_46,field_id_47 from table where entry_id = 36) as t2
set t1.field_id_60 = t2.field_id_46,
t1.field_id_61 = t2.field_id_47
where t1.entry_id = 45
추가 중...
동일한 테이블, 하나 이상의 레지스터 포함
UPDATE table t1
INNER JOIN table t2 ON t2.entry_id = t1.entry_id
SET t1.field_id_60 = t2.field_id_60,
t1.field_id_61 = t2.field_id_61
다음과 같이 내부 조인을 사용하여 업데이트할 수 있습니다.
UPDATE table1 AS t1
INNER JOIN table1 AS t2
SET t1.field_id_60 = t2.field_id_46,
t1.field_id_61 = t2.field_id_47
WHERE t1.entry_id = 54;
특정 데이터베이스가 hibernate_sequence 테이블을 사용하는 동안 수동으로 테이블에 삽입하려고 했기 때문에 이 질문이 매우 유용했습니다.이 질문의 솔루션을 사용하여 가져오기 스크립트를 수정했습니다.저는 많은 "insert in" 문이 있는 스크립트를 차례로 가지고 있었고 ID를 수동으로 설정해야 했습니다.예:
insert into T01_REGIONS (ID, NAME) VALUES ({the next id from hibernate_sequence}, 'name1');
insert into T01_REGIONS (ID, NAME) VALUES ({the next id from hibernate_sequence}, 'name2');
..
.
그래서 저는 제 문제를 해결하기 위해 다음과 같은 일을 했습니다.
insert into T01_REGIONS (ID, NAME) VALUES ((select next_val from hibernate_sequence limit 1), 'name1');update hibernate_sequence as t1, (select next_val+1 as next from hibernate_sequence limit 1) as t2 set t1.next_val = t2.next;
insert into T01_REGIONS (ID, NAME) VALUES ((select next_val from hibernate_sequence limit 1), 'name2');update hibernate_sequence as t1, (select next_val+1 as next from hibernate_sequence limit 1) as t2 set t1.next_val = t2.next;
..
.
내 SQL 스크립트의 각 줄 끝에 추가 쿼리를 추가하는 것은 메모장++로 쉬웠습니다.이것이 매우 추악할 수도 있다는 것을 알지만, 오라클 최대 절전 모드 작동 데이터베이스에서 데이터를 가져오는 동안 테스트 최대 절전 모드 작동 mysql 데이터베이스로 데이터를 가져오는 데 효과가 있었습니다.
update tableX set fieldM = x
where id in
(select inner1.idOfTable
from (
select tb.id as idOfTable
from tableX tb
where someCondition
) inner1);
이 쿼리는 필요 없습니다.
SELECT field_id_46,field_id_47 FROM table WHERE entry_id = '36'
이 작업을 수행해야 합니다.
UPDATE table SET (field_id_60,field_id_61) ('coming_value','other_value') WHERE entry_id = '45';
또한 두 개의 다른 열로 이 작업을 수행할 수 있습니다.이렇게 하면 될 것 같아요.하지만 제가 전혀 몰랐을 수도 있습니다.사용하는 언어로 이 쿼리를 분할해야 합니다.첫 번째 방법에서는 이 쿼리를 사용해야 합니다.
SELECT field_id_46,field_id_47 FROM table WHERE entry_id = '36'
또한 이 데이터에서 가져온 String을 반환할 수 있습니다.그러면 이 반환된 값을 업데이트 기능에서 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/10402678/mysql-update-table-using-select-statment-from-same-table
'programing' 카테고리의 다른 글
| nodejs mariadb 커넥터에 자동 재플래시 옵션을 추가하지 않는 방법은 무엇입니까? (0) | 2023.07.25 |
|---|---|
| Node.js의 HTTP 리디렉션을 어떻게 따르나요? (0) | 2023.07.25 |
| 오류 시스템.설치 시 Oracle Client에 Oracle 클라이언트 소프트웨어 버전 8.1.7 이상이 필요함 (0) | 2023.07.20 |
| 작업 오류: 데이터베이스가 잠겼습니다. (0) | 2023.07.20 |
| IPython/Jupiter 노트북에 라인 번호 표시 (0) | 2023.07.20 |