0

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

我已经尝试过自己,但是对于 6 个查询和嵌套的 if/else,它变得太麻烦了,并且无法将其完成。

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

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

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

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

4

3 回答 3

0

如果您的意思是当您有餐桌客户和餐桌订单时,如果客户没有订单,请删除他们?然后你可以使用子选择:

delete from customer where customerid not in (select customerid from order)
于 2012-10-19T06:37:05.490 回答
0

你可以做一个 DELETE 语句,如

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

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

于 2012-10-19T06:39:32.353 回答
0
DELETE table_devices
FROM table_devices
left JOIN serial ON table_devices.id= serial.device_id
WHERE serial.device_id is null
于 2012-10-19T06:45:24.410 回答