从表中删除一条记录取决于另一个表的值

时间:2018-09-13 05:10:36

标签: mysql sql mysqli sql-delete

嗨,我是sql的新手,我仍在学习任何建议或帮助,我将非常感谢。

我有两个表:第一个表(tbl1)仅显示ID和描述列表,第二个表(tbl2)列出所有使用ID的cx。 tbl1的列id在tbl2中具有公共值(tbl2.address引用tbl1.id)。我正在尝试删除tbl1 id中的记录,其中该id在tbl2中的状态仅为“完成”。

tbl1

id     |       description
-------+----------------------
addA   |         address A
addB   |         address B
addC   |         address c


tbl2 

id        |    address    |   Status    
----------+---------------+-------------
jk1ii     |     addA      |   using
hhh9      |     addA      |   pending
ajjdia    |     addA      |   done
jhis99    |     addB      |   done
ajduio    |     addC      |   using

tbl1的所需输出

id    |  description
------+-----------------
addA  |    address A
addC  |    address c

仅addB将被删除,因为不像addA和addC那样没有其他cx使用该地址,仍然有人在使用该地址,因此不会被删除吗?

现在我正在使用此查询

DELETE from tbl1
WHERE id  in (select address FROM tbl2 WHERE status ='Done')

无论输出是否错误,即使tbl2中仍有一些cx正在使用它,它也会删除addA

1 个答案:

答案 0 :(得分:3)

请尝试以下查询:

DELETE from tbl1
WHERE id  in (select address FROM tbl2 group by address having sum(case when status='Done' then 0 else 1 end)=0)