我想建立一个查询来从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并在内部查询和外部查询中更改表名称,以相同的方式进行其他删除。

10-02 21:50