繁体   English   中英

当另一个表中没有行时,如何从一个表中删除行

[英]How do I delete a row from one table, when no more rows exist in another

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

我已经尝试过了,但是6个查询变得非常麻烦,如果/ else则嵌套了,就无法成功了。

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

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

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

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

如果您的意思是当您有一个表客户和一个表订单时,如果他们没有订单,将其删除吗? 然后,您可以使用subselect:

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

你coult作出这样一个DELETE语句

DELETE FROM masterTable WHERE ID NOT IN (SELECT masterTableID FROM secondaryTable)

这将从主表中删除所有在第二张表中没有任何引用的行。 这也意味着它将不会只删除一行,而是删除所有匹配的行。 您唯一需要的是第二个表中的每一行都引用主表。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM