[英]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.