gpt4 book ai didi

SQL查询(Join without duplicates)

转载 作者:行者123 更新时间:2023-11-29 12:32:49 25 4
gpt4 key购买 nike

我有表 userstopics。每个用户可以拥有 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;

但它需要 0 个结果。但它不应该为 0。

最佳答案

首先,您需要有两个表,因为您留下的有关表结构的信息有限,我将使用一个示例来解释其工作原理,然后您应该能够轻松地将其应用到您自己的表中。

首先你需要有两个表(你有)

表“用户”

id | name
1 | Joe Bloggs
2 | Eddy Ready

表“主题”

topicid | userid | topic
1 | 1 | Breakfast
2 | 1 | Lunch
3 | 1 | Dinner

现在要求对每个用户进行计数是使用以下方法完成的;

SELECT user.name, count(topic.topicid) 
FROM user
INNER JOIN topic ON user.id = topic.userid
GROUP BY user.name

如果您使用左连接,这将包括来自“用户”表的记录,而该记录在“主题”表中没有任何行,但是如果您使用内部连接,这将只包括具有匹配值的用户在两个表中。

即因为用户 ID“2”(我们用来加入)没有列在主题表中,所以您不会获得该用户的任何结果。

希望对您有所帮助!

关于SQL查询(Join without duplicates),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37155691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com