我想知道检查一个数据表的最佳方法,当不再存在与 WHERE 子句匹配的行时,从另一个表中删除一行。
我已经尝试过自己,但是对于 6 个查询和嵌套的 if/else,它变得太麻烦了,并且无法将其完成。
我以前从未使用过 SQL 连接,因此示例将帮助我理解响应。
我有一个设备表,有一个带有设备和密码的主表。
上表中还有第二个表,其中包含设备的多行,以及一系列序列号。
当第二个表不再包含主表中列出的任何序列号时,我想要包含主表中的设备和密码的行。
我想知道检查一个数据表的最佳方法,当不再存在与 WHERE 子句匹配的行时,从另一个表中删除一行。
我已经尝试过自己,但是对于 6 个查询和嵌套的 if/else,它变得太麻烦了,并且无法将其完成。
我以前从未使用过 SQL 连接,因此示例将帮助我理解响应。
我有一个设备表,有一个带有设备和密码的主表。
上表中还有第二个表,其中包含设备的多行,以及一系列序列号。
当第二个表不再包含主表中列出的任何序列号时,我想要包含主表中的设备和密码的行。
如果您的意思是当您有餐桌客户和餐桌订单时,如果客户没有订单,请删除他们?然后你可以使用子选择:
delete from customer where customerid not in (select customerid from order)
你可以做一个 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