当另一个表中不存在其他行时,如何从一个表中删除一行

时间:2012-10-19 06:32:48

标签: php mysql delete-row

我想知道检查一个数据表的最佳方法,当不存在与WHERE子句匹配的行时,从另一个表中删除一行。

我已经尝试过自己,但是对于6个查询而言已经变得过于繁琐,并且if / else是嵌套的,并且它无法完成它。

我之前从未使用过SQL join,因此示例将帮助我理解响应。

我有一个设备表,有一个带有设备和密码的主表。

第二个表格包含上表中设备的多行,以及一系列序列号。

当第二个表不再包含主表中列出的任何序列号时,我希望包含主表中的设备和密码的行。

3 个答案:

答案 0 :(得分:0)

如果您的意思是当您拥有表客户和表格订单时,如果他们没有订单,请删除客户?然后你可以使用subselect:

delete from customer where customerid not in (select customerid from order)

答案 1 :(得分:0)

您可以像

一样制作DELETE语句
DELETE FROM masterTable WHERE ID NOT IN (SELECT masterTableID FROM secondaryTable)

这会删除master-table中第二个表中没有任何引用的所有行。这也意味着它不会只删除一行,而是删除所有匹配的行。您需要的唯一必要事项是第二个表中的每一行都引用主表。

答案 2 :(得分:0)

DELETE table_devices
FROM table_devices
left JOIN serial ON table_devices.id= serial.device_id
WHERE serial.device_id is null