我想构建一个查询来删除2个表中的数据,但是有些条件,比如如果cree_facture.refe ='EST1'从cree_devis中删除,那么cree_devis.refe ='EST1'并且如果refe ='INV1'从cree_facture与cree_facture.refe ='INV1'
我尝试用这个2查询问题删除表中没有条件的所有数据
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';
答案 0 :(得分:0)
首先,您不能使用连接同时删除2个表。
你可能想要这个:
从CREE_DAVIS T1删除 T1.REFE =' EST1' 和EXISTS (选择1 来自CREE_FACTURE T2 在哪里T1.CREE_PAR = T2.CREE_PAR 和T2.REFE =' EST1')
解释:从表1中删除在另一个表中存在与CREE_PAR匹配的行的每一行,而两者都有REFE =' EST1'
希望这就是你想要的。
现在,您还可以使用INV1并更改内部和外部查询中的表名,以相同的方式进行其他删除。