我有一個mysql查詢返回所需的數據,但沒有返回唯一的行。我如何確保只返回唯一的行?與MySQL聯合的唯一列
這裏是我的查詢
SELECT a.follow_id, a.user_id, a.following, b.donor_id, b.firstname, b.lastname, b.image
FROM followers a
INNER JOIN donors b ON a.user_id = b.user_id
WHERE following = 257
UNION DISTINCT
SELECT a.follow_id, a.user_id, a.following, b.donor_id, b.firstname, b.lastname, b.image
FROM followers a
INNER JOIN donors b ON a.following = b.user_id
WHERE a.user_id = 257
這對於一個USER_ID返回多個結果。我如何確保結果不會被user_id加倍?
我已經嘗試了一組,但我一定是做錯了什麼,因爲我無法得到它的工作。
結果我回來
**follow_id user_id following donor_id firstname lastname** image
13 224 257 124 Just A Donor 224.jpg
11 257 224 124 Just A Donor 224.jpg
9 257 222 116 Dummy Donor 222.jpg
明白了...只是不得不按donor_id
SELECT * FROM
(SELECT a.follow_id, a.user_id, a.following, b.donor_id, b.firstname, b.lastname, b.image
FROM followers a
INNER JOIN donors b ON a.user_id = b.user_id
WHERE following = 257
UNION DISTINCT
SELECT a.follow_id, a.user_id, a.following, b.donor_id, b.firstname, b.lastname, b.image
FROM followers a
INNER JOIN donors b ON a.following = b.user_id
WHERE a.user_id = 257) AS t
GROUP BY donor_id
你現在說你想每個用戶ID只有一行嗎?這與你最初提出的問題(以及哪兩個人回答)不同。對於任何給定的用戶標識,查詢應該如何決定返回哪一行?例如,在你給出的結果集中,結果的兩行中的哪一行應該返回給user_id 257? – 2012-03-11 05:32:49
當user_id相同(257)時,您希望顯示其他列的顯示內容(與您顯示的內容不同)。最重要的是請顯示您想要查看的**期望**輸出。謝謝! – 2012-03-11 05:33:49
它應該只返回1行,每個user_id。對不起,如果我的問題不清楚。 – 2012-03-11 05:37:14