ann*_*irq 1 sql postgresql having
我有桌子users和topics.每个用户可以拥有0到几个主题(一对多关系).
我如何才能获得至少有一个主题的用户?
我需要来自用户的所有列(没有主题中的列),并且表中没有重复项users.在上一篇专栏文章中,我需要多少主题.
更新:
应该是这样的:
SELECT user.*, count(topic.id)
FROM ad
LEFT JOIN topic ON user.id = topic.ad
GROUP BY user.id
HAVING count(topic.id) > 0;
Run Code Online (Sandbox Code Playgroud)
但它需要0结果.但它不应该是0.
小智 5
首先,您需要拥有两个表,因为您已经留下了有关表结构的有限信息,我将使用一个示例来解释其工作原理,然后您应该可以轻松地将其应用于您自己的表.
首先你需要有两个表(你做的)
表"用户"
id | name
1 | Joe Bloggs
2 | Eddy Ready
Run Code Online (Sandbox Code Playgroud)
表"主题"
topicid | userid | topic
1 | 1 | Breakfast
2 | 1 | Lunch
3 | 1 | Dinner
Run Code Online (Sandbox Code Playgroud)
现在要求对每个用户进行计数是使用以下方法完成的;
SELECT user.name, count(topic.topicid)
FROM user
INNER JOIN topic ON user.id = topic.userid
GROUP BY user.name
Run Code Online (Sandbox Code Playgroud)
如果您使用左连接,这将包括来自"user"表的记录,该表在"topic"表中没有任何行,但是如果您使用INNER JOIN,则这将只包括在两个表中具有匹配值的用户.
即因为用户ID"2"(我们用于加入)未在主题表中列出,您将无法获得该用户的任何结果.
希望有所帮助!
| 归档时间: |
|
| 查看次数: |
3240 次 |
| 最近记录: |