删除所有具有重复项的查询结果(NOT DISTINCT)

时间:2015-04-15 07:13:37

标签: mysql count duplicates unique 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中任何具有重复的值都将被删除。

3 个答案:

答案 0 :(得分:0)

试试这个

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

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

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

答案 1 :(得分:0)

经过测试和工作!你需要至少计数(*)来计算值

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

答案 2 :(得分:0)

我不知道你为什么要避免使用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