Portál AbcLinuxu, 18. května 2025 17:55
Dobrý den, potřebuji pročistit jednu tabulku na základě záznamu v jiné tabulce. Mám dvě tabulky, v obou mám ID_neco. V jedné tabulce mám některé záznamy vymazané. V druhé zůstává řádek s ID_neco porad dal.
Jak mám napsat dotaz: Když nenajdeš ID_neco v tabulce 2 smaž záznam s příslušným ID_neco v tabulce 1.
Používám mysql.
Předem děkuji
Nováček
DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;a pokud to dobře chápu, je to přesně to, co potřebujete.
Obávám se, že tohle nebude fungovat. V deklaraci
LEFT JOIN t2 ON t1.id=t2.id t2.id totiž neexistuje (t2.id IS NULL), takže se nemůže přiřadit k id v prní tabulce ..
t1
, ke kterým neexistuje odpovídající záznam v t2
. To znamená, že ve spojení t1 LEFT JOIN t2 ...
bude právě pro takové záznamy platit t2.id IS NULL
. Proto se použije vnější spojení, a ne vnitřní DELETE FROM tabule1 WHERE id NOT IN (SELECT id FROM tabule2)
delete from aaa where not exists (select 1 from bbb where aaa.col = bbb.col);
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.