我有一个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