我有两个 SQL 表 - 客户和小部件。它们之间有一个连接表 customers_widgets,它有两列(customer_id 和 widget_id)
有没有一种方法可以选择所有未加入小部件的客户?所以他们的 ID 没有出现在连接表的 customer_id 列中?
最佳答案
总的来说,我发现 NOT IN
既昂贵又缓慢,但您的里程可能因不同的 RDBMS 而异。
我最常用的两个替代方案是:
SELECT
*
FROM
customer
WHERE
NOT EXISTS (SELECT *
FROM customers_widgets
WHERE customers_widgets.customer_id = customer.customer_id
)
还有……
SELECT
customer.*
FROM
customer
LEFT JOIN
customers_widgets
ON customers_widgets.customer_id = customer.customer_id
WHERE
customer_widgets.customer_id IS NULL
关于sql - 选择在连接表中没有相应连接的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32587227/