[英]SQL. The intricate JOIN between two tables
我有2个表: 用户和订阅者 。 用户与订户的关系是多对多的 。
我知道如何让所有用户:
SELECT * FROM users
而且我也知道如何通过他的id(例如id = 1)获得给定用户的订阅者:
SELECT * FROM users LEFT JOIN subscribers ON id = user_id WHERE user_id = 1
但我需要这些结果不是分开但是在一起。
也就是说,我想创建一个查询来获取所有用户 。 但除了它们的属性之外,查询结果必须包含一个属性 ,该属性显示每个用户是否是订阅者。 像这样的东西:
当然我想避免使用子查询。 只使用JOIN会很棒。如果这种情况有可能。
提前致谢!
你可以做:
SELECT u.*,
CASE WHEN s.user_id IS NULL THEN 'false' ELSE 'true' END as IsSubscriber
FROM users u
LEFT JOIN subscribers s ON u.id = s.user_id
...因为当用户不在subscribers
表中时, left join
s.user_id
为null
。
我更新了你的查询结果你想要的结果。
SELECT u.id, u.firstName, u.lastname, WHEN s.user_id IS NULL 'false' else 'true' END as IsSubscriber.
FROM users u
LEFT JOIN subscribers s
ON u.id = s.user_id
WHERE user_id = 1
SELECT users.id, users.firstname, users.lastname, COUNT(subscribers.user_id) != 0 AS isSubscriber
FROM users
LEFT JOIN subscribers ON users.id = subscribers.user_id
GROUP BY users.id, users.firstname, users.lastname
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.