繁体   English   中英

SQL。 两个表之间错综复杂的JOIN

[英]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_idnull

我更新了你的查询结果你想要的结果。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM