我目前正在嘗試運行以下查詢。
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。
謝謝!
uj5u.com熱心網友回復:
問題是 DISTINCT 基于您定義的“組”
SELECT DISTINCT friend_id, hobbies as friend_hobby
在上面的行中,您是說要給您所有不同的friend_id和hobbies(friend_hobby) 對。
但是,您的預期結果似乎更像是:給我取第一個具有不同 id 的元組(如果這句話有意義的話)。
在這種情況下,我相信做類似下面的帖子應該有助于你想要的:https : //stackoverflow.com/a/42345019/5989233
uj5u.com熱心網友回復:
DISTINCT本身犯規洗掉重復的,你需要group by以及
SELECT DISTINCT friend_id, friend_hobby from {whatever} group by friend_id
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/330802.html
標籤:mysql
上一篇:MySQL自動增量不是從1開始
