簡體   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