我想知道检查一个数据表的最佳方法,当不存在与WHERE子句匹配的行时,从另一个表中删除一行。
我已经尝试过自己,但是对于6个查询而言已经变得过于繁琐,并且if / else是嵌套的,并且它无法完成它。
我之前从未使用过SQL join,因此示例将帮助我理解响应。
我有一个设备表,有一个带有设备和密码的主表。
第二个表格包含上表中设备的多行,以及一系列序列号。
当第二个表不再包含主表中列出的任何序列号时,我希望包含主表中的设备和密码的行。
答案 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