Уникальные столбцы с MySQL Union - PullRequest
0 голосов
/ 11 марта 2012

У меня есть запрос 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

Ответы [ 2 ]

0 голосов
/ 11 марта 2012

Вы пробовали это?

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 or a.user_id = 257

Вы также можете попробовать SELECT DISTINCT, если строки не уникальны в каждой половине запроса.

0 голосов
/ 11 марта 2012
SELECT  DISTINCT 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
...