我想建立一个查询来从2个表中删除数据,但是要考虑一些条件,例如,如果cree_facture.refe ='EST1'从cree_devis中删除,而cree_devis.refe ='EST1',以及refe ='INV1'从cree_facture中删除, cree_facture.refe ='INV1'
我尝试使用此2查询bu问题从表中删除所有数据没有条件
DELETE FROM `cree_devis`, `cree_facture`
USING `cree_devis`,`cree_facture`
WHERE `cree_devis`.`cree_par` = `cree_facture`.`cree_par`
AND (`cree_devis`.`refe` = 'INV1' OR `cree_facture`.`refe` = 'INV1' )
和
DELETE cree_devis, cree_facture
FROM cree_devis
INNER JOIN cree_facture ON (cree_devis.cree_par=cree_facture.cree_par)
WHERE cree_devis.refe = 'EST1'
OR cree_facture.refe = 'EST1';
最佳答案
首先,您不能使用联接同时在2个表中删除。
您可能想要这样:
从CREE_DAVIS T1删除
T1.REFE ='EST1'
和存在
(选择1
从CREE_FACTURE T2
T1.CREE_PAR = T2.CREE_PAR
AND T2.REFE ='EST1')
说明:从表1中删除每一行,其中另一行中存在与CREE_PAR匹配的行,而这两行都具有REFE ='EST1'
希望这就是你想要的。
现在,您还可以使用INV1并在内部查询和外部查询中更改表名称,以相同的方式进行其他删除。