我在MySQL中有表“ rec”,例如
ID TPI ROLE percent
1 10 ADMIN 80
2 20 USER 20
3 10 USER 90
4 20 USER 60
所有tpi都可以是ADMIN或USER,但是由于错误,在两个角色中都设置了TPI 10。我如何才能找到在表中同时扮演这两个角色的TPI。它只是真实表中的虚拟表,我有1000数据。
我正在尝试
SELECT DISTINCT TPI,ROLE FROM `rec` GROUP BY TPI HAVING(COUNT(TPI)) > 1
但是我没有得到欲望输出
答案 0 :(得分:3)
如果您只想查找具有多个角色的那些用户,那么我们可以尝试汇总:
SELECT TPI
FROM rec
GROUP BY TPI
HAVING MIN(ROLE) <> MAX(ROLE);
当前查询的主要问题是您在选择ROLE
的同时仅汇总TPI
。这没有任何意义。另外,HAVING
不是SQL中的函数,而是运算符,因此它后面不需要括号。
答案 1 :(得分:2)
您可以检查角色
select tpi, count(distinct ROLE)
from `rec`
GROUP BY tpi HAVING count(distinct ROLE) > 1
或代表角色
select tpi, count( ROLE)
from `rec`
GROUP BY tpi HAVING count( ROLE) > 1
答案 2 :(得分:0)
您可以使用以下查询获得相同的结果。
SELECT TPI FROM `rec` GROUP BY TPI HAVING(count(distinct ROLE)>1);