Próbowałem :
UPDATE closure JOIN item ON ( item_id = id )
SET checked = 0
WHERE ancestor_id = 1
I:
UPDATE closure, item
SET checked = 0
WHERE ancestor_id = 1 AND item_id = id
Oba działają z MySQL, ale powodują one błąd składni w SQLite.
Jak mogę sprawić, by ta aktualizacja / DOŁĄCZ działała z SQLite w wersji 3.5.9?
sqlite
join
sql-update
e-satis
źródło
źródło
Odpowiedzi:
Nie możesz. SQLite nie obsługuje JOIN w instrukcjach UPDATE .
Ale prawdopodobnie możesz to zrobić za pomocą podzapytania:
UPDATE closure SET checked = 0 WHERE item_id IN (SELECT id FROM item WHERE ancestor_id = 1);
Czy coś takiego; nie jest jasne, jaki jest twój schemat.
źródło
update foos join bars on bars.foo_id = foos.id set foos.bar_id = bars.id
następnie upuścić kolumnę bars.foo_id ... jak można to zrobić w SQLite? Jeśli ktoś wie, z pewnością mógłbym go użyć.Możesz także użyć ZAMIEŃ, a następnie możesz użyć zaznaczenia z połączeniami. Lubię to:
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
źródło