繁体   English   中英

删除所有重复的查询结果(不区分)

[英]Remove all query results that have duplicates (NOT DISTINCT)

我有一个带有两组整数值的表。 使用MySQL我想在第二列中显示与唯一条目相对应的所有行。 基本上,我可以有重复的A值,但只能有唯一的B值。 如果B中的某个值重复,则删除所有具有该值的结果。 如果我使用DISTINCT我仍会得到我不想要的重复项之一。 我也想避免使用COUNT() 这是一个例子:

|_A____B_|
| 1    2 |
| 1    3 |
| 2    2 |
| 2    4 |
| 1    4 |
| 5    5 |

将具有以下结果(1,3),(5,5)。 B中具有重复项的所有值都将被删除。

尝试这个

SELECT * FROM TEMP WHERE B IN (
  SELECT B FROM TEMP GROUP BY B Having COUNT(B)=1
 );

我知道您想避免使用COUNT()但这是快速的解决方案。

在这里工作提琴-http://sqlfiddle.com/#!9/ 29d16/8

经过测试,可以正常工作! 您需要至少count(*)来计算值

 select * from test where B in (
   select B from test  group by B  having count(*)<2
 )

我不知道您为什么要避免使用count(),因为这将达到以下目的:

假设您的表名为“ mytable”

SELECT t1.A, t1.B
FROM mytable t1
JOIN (
    SELECT B, count(*) AS B_INSTANCES
    FROM mytable
    GROUP BY B
    HAVING count(*) = 1
) t2 ON t2.B = t1.B
ORDER BY t1.A, t1.B

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM