从表中删除记录取决于其他表值

问题描述 投票:1回答:1

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

我有两个表:第一个表(tbl1)只显示id和description列表,第二个表(tbl2)列出所有使用id的cx。 tbl1的列id在tbl2中具有共同的值(tbl2.address引用tbl1.id)。我试图删除tbl1 id中的记录,其中该id的tbl2中的状态仅为Done。

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会被删除,因为没有其他cx使用地址不像addA和addC那里仍然有人使用该地址所以它不会被删除是否可能?

现在我正在使用此查询

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

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

mysql sql mysqli sql-delete
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.