이 코드를 사용하여 "오류 '# 1093-FROM 절에서 업데이트 할 대상 테이블't1 '을 지정할 수 없습니다.'가 발생했습니다 .
UPDATE `table1` t1 SET t1.name = 'abc'
WHERE t1.id = 165 AND NOT EXISTS (
SELECT t2.id FROM `table1` t2 WHERE t2.id != 165 AND t2.name = 'abc'
)
그러나 코드에는 문제가 없습니다.
UPDATE `table1` t1 SET t1.name = 'abc'
WHERE t1.id = 165 AND NOT EXISTS (
SELECT t2.id FROM `table2` t2 WHERE t2.id != 165 AND t2.name = 'abc'
)
내가 뭘 잘못 했어?
이 쿼리를 동일한 테이블에 대한 자체 조인으로 바꿀 수 있습니다.
UPDATE table1 t1
LEFT JOIN table1 t2
ON t2.id != 165 AND t2.name = 'abc'
SET t1.name = 'abc'
WHERE t1.id = 165 AND t2.name IS NULL
여기서 업데이트 논리 는 조인의 왼쪽 에있는 레코드 가가 165가 아니고 이름이 인 레코드 와 일치 하지 않는 ( ) 위치 NOT EXISTS
로 절이 대체 된 것 입니다 .LEFT JOIN
t2.name IS NULL
id
abc
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다