我有一组包含两组整数值的表。使用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中任何具有重复的值都将被删除。
答案 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