【发布时间】:2016-08-14 15:12:17
【问题描述】:
我在 MySQL 中有 3 个表,我需要查找用户没有特定小部件的所有实例。
例子:
Users
tenant_id user_id user_name
1 1 Bob
1 2 Fred
1 3 John
1 4 Tom
Widgets
tenant_id widget_id widget_name
1 1 Red
1 2 Blue
1 3 Green
1 4 Black
Usage
tenant_id user_id widget_id
1 1 1
1 1 2
1 1 4
1 2 2
1 2 3
1 2 4
1 3 1
1 3 2
1 3 3
1 3 4
1 4 1
1 4 2
1 4 3
Missing in table three are:
user_name widget_name
Bob Green
Fred Red
Tom Black
我尝试使用的查询是:
SELECT
user_name, widget_name
FROM
users left join widgets on users.tenant_id=widgets.tenant_id
WHERE
NOT EXISTS (
SELECT 1 FROM usage WHERE user_id = users.user_id AND widget_id = widgets.widget_id
) and users.tenant_id=1
当查询完成时,它会返回一个巨大的用户名和小部件名称列表,但比我预期的要多数百个。
我不确定连接是否错误,或者我是否需要对结果进行某种分组?
【问题讨论】:
-
你得到了什么结果?请将其包含在您的答案中或设置 SQL Fiddle。
标签: mysql join not-exists