Programing

SQLite에서 테이블을 조인하는 동안 어떻게 업데이트합니까?

crosscheck 2020. 9. 4. 06:54
반응형

SQLite에서 테이블을 조인하는 동안 어떻게 업데이트합니까?


나는 시도했다 :

UPDATE closure JOIN item ON ( item_id = id ) 
SET checked = 0 
WHERE ancestor_id = 1

과:

UPDATE closure, item 
SET checked = 0 
WHERE ancestor_id = 1 AND item_id = id

둘 다 MySQL에서 작동하지만 SQLite에서 구문 오류가 발생합니다.

이 업데이트 / 조인이 SQLite 버전 3.5.9에서 작동하도록하려면 어떻게해야합니까?


당신은 할 수 없습니다. SQLite 는 UPDATE 문에서 JOIN을 지원하지 않습니다 .

그러나 대신 하위 쿼리를 사용하여이 작업을 수행 할 수 있습니다.

UPDATE closure SET checked = 0 
WHERE item_id IN (SELECT id FROM item WHERE ancestor_id = 1);

또는 그런 것; 스키마가 정확히 무엇인지 명확하지 않습니다.


REPLACE사용할 수도 있고 조인과 함께 선택을 사용할 수도 있습니다. 이렇게 :

REPLACE INTO clusure 
 SELECT sel.col1,sel.col2,....,sel.checked --checked should correspond to column that you want to change
FROM (
 SELECT *,0 as checked FROM closure LEFT JOIN item ON (item_id = id) 
 WHERE ancestor_id = 1) sel

참고 URL : https://stackoverflow.com/questions/773441/how-do-i-make-an-update-while-joining-tables-on-sqlite

반응형