Kiedy uruchomię to:
DELETE FROM folders AS fo
LEFT OUTER JOIN files AS fi
ON fo.folderId = fi.folderId
WHERE fi.folderId IS NULL AND (fo.folderId IN (63,1000))
... Dostaję błąd składniowy:
# 1064 - Masz błąd w składni SQL;sprawdź instrukcję, która odpowiada twojej wersji serwera MySQL dla właściwej składni do użycia w pobliżu "AS LEFT OUTER JOIN files AS FI ON fo.folderId = fi.folderId GDZIE sfinał "w linii 1
Kod jest oparty na SELECT
zapytanie zwracające zamierzone wiersze. Jaki jest powód komunikatu o błędzie?
Odpowiedzi:
1 dla odpowiedzi № 1Nie jest zaskoczeniem, że "nie działa". Kiedy uruchamiam twój kod, otrzymuję błąd składniowy:
Błąd SQL (1064): Wystąpił błąd w składni SQL; Sprawdź instrukcja, która odpowiada twojej wersji serwera MySQL po prawej stronie Składnia do użycia w pobliżu plików AS LEWEJ ZEWNĘTRZNEGO ZAŁĄCZAJ do fo.folderId = fi.folderId WHERE fi.fold "w linii 1
The poprawna składnia jest:
DELETE fo -- Note I"ve added table name
FROM folders AS fo
LEFT OUTER JOIN files AS fi
ON fo.folderId = fi.folderId
WHERE fi.folderId IS NULL AND (fo.folderId IN (63,1000));
1 dla odpowiedzi nr 2
DELETE
FROM folders fo
WHERE NOT EXISTS (SELECT 1
FROM files fi
WHERE fi.folderId = fo.folderId)
AND fo.folderId IN (63, 1000)