如何找到与其他列MYSQL输入错误的唯一列

时间:2018-12-13 13:09:36

标签: mysql

我在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

但是我没有得到欲望输出

3 个答案:

答案 0 :(得分:3)

如果您只想查找具有多个角色的那些用户,那么我们可以尝试汇总:

SELECT TPI
FROM rec
GROUP BY TPI
HAVING MIN(ROLE) <> MAX(ROLE);

Demo

当前查询的主要问题是您在选择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);