Mam dwie tabele, jedną dla terminów pracy, jedną dla opisania pracy. Każde zadanie może mieć status, a niektóre statusy oznaczają, że terminy zadań muszą zostać usunięte z drugiej tabeli.Usuwanie wierszy za pomocą MySQL LEFT DOŁĄCZ
mogę łatwo SELECT
zadań/terminów, które spełnia moje kryteria z LEFT JOIN
:
SELECT * FROM `deadline`
LEFT JOIN `job` ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
(status
należący do job
tabeli nie deadline
)
Ale kiedy Chciałbym usunąć te wiersze od deadline
, MySQL zgłasza błąd. Moje zapytanie brzmi:
DELETE FROM `deadline`
LEFT JOIN `job`
ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
Błąd MySQL nic nie mówi:
masz błąd w składni SQL; sprawdzić podręcznika, który odpowiada twojej wersji serwera MySQL dla prawego składnię używaną w pobliżu „LEFT JOIN
job
NA deadline.job_id = job.job_id GDZIEstatus
=«szaml»at line 1
Jak mogę włączyć mój SELECT
do działającego zapytania o numer: DELETE
?
Używaj także "status w (" szamlazva "," szamlazhato "," fizetve ", .........)" – Salil
W "AS" musiałem użyć aliasu w mojej klauzuli, aby działało dla mojego Celem (usuwanie sierot): dELETE FROM t1 tabela1 AS t1 LEFT JOIN T2, T2 NA t1.uid = t2.result GDZIE t2.result IS NULL – Urs
referencyjny: http://dev.mysql.com/doc/ refman/5.7/en/delete.html – Slawa