mysql - 如何在 SQL 中搜索并获取大表的计数(where-in)

标签 mysql sql group-by where-in

我有sql表:

id  user    city
1   Alisa   New York
2   Alisa   Sydney
3   Alisa   Rom
4   Alisa   Toronto
5   Bob     Rom
6   Bob     Moskow
7   Bob     Sydney
8   Tom     Sydney

例如,我需要了解有多少个相同城市有 Bob 的其他用户。

SELECT user, count(DISTINCT city) FROM table WHERE city IN (
   SELECT city FROM table WHERE user = 'Bob'
) AND user != 'Bob' GROUP BY user

结果是:

user    count(DISTINCT city)
Alisa   2
Tom     1

您知道提出此请求的其他最佳方式吗? 大 table 可以吗?

最佳答案

这个怎么样:

SELECT A.user, 
       count(DISTINCT A.city)
FROM table  A,
     (SELECT city FROM table WHERE user = 'Bob') B
WHERE A.city = B.city
AND A.user != 'Bob'
GROUP BY A.user

关于mysql - 如何在 SQL 中搜索并获取大表的计数(where-in),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20403547/

相关文章:

c# - MySQL C# 连接字符串故障转移

java.sql.SQLException : Before start of result set

mysql - 如何按查询对 MySQL 计数/分组中的第三个字段求和

sql - 创建一个以 SQL @tables 作为其成员的 UDT

mysql - 使用 group by 对两个表进行排序

mysql - Rails db 中性数据透视表或交叉表

android - 从 mysql 加载数据后立即停止 android 中的加载屏幕

sql - 如何在 Grafana 中获取对 AWS/RDS 的查询

mysql - SQL 计算键值列的唯一组合中的行数

sql - MySQL 查找小计