parent_table:
ID | FIELD1 | FIELD2
____|________|________
1 |........|......
2 |........|.....
3 |..............
child_table:
ID | FIELD3
___|________
1 | 18
1 | 7
2 | ..
1 | ..
3 | ..
2 | ..
이 테이블을 업데이트하고 싶다고 가정 해 봅시다. 이것은 내가 달성하는 데 필요한 것입니다 : 각 ID의 자식 테이블의 항목 수를 업데이트하는 동안 다를 수자식 테이블의 여러 행에 대한 업데이트를 결합하십시오.
UPDATE parent_table SET
FIELD1 = 'XXX',
FIELD2 = 'YYY'
WHERE ID = 2;
DELETE FROM child_table
WHERE ID = 2;
INSERT INTO child_table (ID, FIELD3)
VALUES (2, 50),
VALUES (2, 17),
VALUES (2, 9);
참고.
하나의 쿼리에서 동일한 결과를 얻을 수 있습니까? 거래를 사용할 수 없습니다.
아마도 처음 두 쿼리는 병합하기가 더 쉽습니다. UPDATE 중에 자식 테이블에 가입하고 null 값을 설정하려고했지만 여러 행을 처리하는 방법을 알지 못합니다. 중첩 SELECT처럼 중첩 된 UPDATE를 사용할 수 있습니까?
물론 문제는 : 조인 된 테이블에서 여러 행을 어떻게 업데이트합니까? CASE 문장을 넣어도 (idk) 허용 되었더라도 테이블의 항목 수와 업데이트 할 번호 사이의 불일치를 어떻게 설명합니까? 예를 들어 여기에는 ID = 2에 대한 두 개의 항목이 있지만 다른 항목을 넣으려고하면 어떻게됩니까? .. 어쩌면 그것을 할 수 없다. – Valentino
"another"를 넣으면 다음과 같은 의미입니다. 예를 들어 ID 2와 ID3을 모두 변경 하시겠습니까? – alfasin
아니요,'FIELD3'이 문자열 "5,40,15"로 설정된 경우'3,5,7,8,15,7 "'로 업데이트해야 할 수도 있습니다. 즉, 'child_table'의 행의 수는 다양 할 수 있습니다. 이 경우 – Valentino