SQL:SQL查询以获取相应的数据
所以,问题是我需要找到国籍为“美国”的人收到的礼物总数,现在我有两个不同的表,分别名为gift\u info和users\u info,users\u info表包含国籍属性,而gift\u info包含gift\u id属性 我想出了类似的办法SQL:SQL查询以获取相应的数据,sql,postgresql,Sql,Postgresql,所以,问题是我需要找到国籍为“美国”的人收到的礼物总数,现在我有两个不同的表,分别名为gift\u info和users\u info,users\u info表包含国籍属性,而gift\u info包含gift\u id属性 我想出了类似的办法 SELECT users_info.user_id, gift_info.gift_id, users_info.nationality FROM gift_info LEFT JOIN users_info ON gift_info.gift_id
SELECT users_info.user_id, gift_info.gift_id, users_info.nationality
FROM gift_info
LEFT JOIN users_info
ON gift_info.gift_id = users_info.user_id
where users_info.nationality = 'America'
此查询提供的输出是用户id、礼物id和国籍“America”,而我需要“America”国籍的人收到的礼物总数。修改SELECT语句以计算礼物id的数量并添加GROUP by子句:
SELECT COUNT(DISTINCT gift_info.gift_id)
FROM gift_info
LEFT JOIN users_info
ON gift_info.user_id= users_info.user_id
where users_info.nationality = 'America'
GROUP BY users_info.nationality = 'America'
根据@Sujitmohanty30的评论编辑WHERE子句如果我理解正确,我想您需要:
SELECT COUNT(*)
FROM gift_info gi JOIN
users_info ui
ON gi.user_id = ui.user_id
WHERE ui.nationality = 'America';
注:
- 外部联接不合适,因为您需要国籍
- 表别名使查询更易于编写和读取
- 我认为一个简单的
就足以得到给出的数量。如果需要人数,请使用COUNT(*)
COUNT(DISTINCT ui.user\u id)
条件吗?礼品id=users\u info.user\u id
正确吗?现在我想起来了,它没有意义,谢谢你指出!