[英]Why doesn't DISTINCT remove duplicates?
我目前正在嘗試運行以下查詢。
SELECT DISTINCT friend_id, hobbies as friend_hobby
FROM all_friends
WHERE friend_id NOT IN
(SELECT distinct(friend_id)
FROM all_friends
WHERE (friend_type = 'Good' OR friend_type = 'Great')
);
預期結果
friend_id | friend_hobby
--------------------
123 | Basketball
--------------------
345 | Painting
實際結果
friend_id | friend_hobby
--------------------
123 | Basketball
--------------------
123 | Social Media
--------------------
123 | Reading
--------------------
123 | Hiking
--------------------
123 | Cooking
--------------------
345 | Painting
--------------------
345 | Hiking
--------------------
345 | Writing
--------------------
345 | Movies
--------------------
345 | Coding
誰能解釋為什么distinct 子句不返回我的預期結果?
是因為我也在獲取friend_hobby嗎?
注意,我需要同時選擇friend_id 和hobbies,因為我需要使用Select 語句來UNION 來獲取friend_id 和hobbies。 這個 select 語句中的愛好並不重要,因為它們會在某個時候被替換。
解決辦法是什么? 我知道在語句末尾添加 group by 將刪除重復的朋友 ID,但我不希望在沒有聚合發生的情況下使用 group by。
謝謝!
問題是 DISTINCT 基於您定義的“組”
SELECT DISTINCT friend_id, hobbies as friend_hobby
在上面的行中,您是說要為您提供所有不同的friend_id
和hobbies
(friend_hobby) 對。
但是,您的預期結果似乎更像是:給我取第一個具有不同 id 的元組(如果這句話有意義的話)。
在這種情況下,我相信做類似下面的帖子應該有助於你想要的: https : //stackoverflow.com/a/42345019/5989233
DISTINCT 本身不會刪除重復項,您也需要group by
SELECT DISTINCT friend_id, friend_hobby from {whatever} group by friend_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.