2014-12-11 4 views
0

У меня есть таблица, как имя «элементы»Как получить определенное значение от повторения результата

id  sender receiver  item 
1  1  2    computer 
2  2  1    mobile 
3  1  3    ipad 
4  4  1    ring 
5  3  1    camera 
6  1  8    pc 
7  5  1    ring 
8  1  10    tablet 

Я могу только сделать эти два запроса, как

SELECT `receiver` FROM `items` WHERE `sender` ='1' 

результате

2 
3 
4 
10 

и

SELECT `sender` FROM `items` WHERE `receiver` ='1' 

результат

2 
4 
3 
5 

Как я могу получить отчетливое recevier/отправителя (посчитайте только один, если придет больше 1), где отправитель/получатель = 1

как сильфона

2 
3 
4 
5 
10 
+0

Если я хочу получить заказ отправителя/получателя, с которым произошло последнее взаимодействие, когда отправитель/получатель ver = 1, я имею в виду порядок (10, 5, 8, 3, 4, 2). Извините, брат, за то, что он попросил еще одного, на самом деле кажется, что лучше заказать ... –

ответ

3

One опцией является использование UNION:

SELECT receiver FROM items WHERE sender ='1' 
UNION 
SELECT sender FROM items WHERE receiver ='1' 

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

(Производит немного разные результаты, приведенные ваши выборочные данные, как я думаю, вы были некоторые опечатки)

+0

Спасибо, я проверял ваш ответ и уточнил для меня, что предложение UNION является ярлыком UNION DISTINCT. –

+0

@sgeddes, спасибо Bro .... –

+0

Я бы предпочел это решение, потому что, если вы задумали свой план задумчиво, у вас, вероятно, есть индексы для полей «получатель» и «отправитель», и этот выбор будет использовать их обоих. –

1

Вы можете сделать это безunion:

SELECT DISTINCT (case when receiver = 1 then sender else receiver end) 
FROM items 
WHERE sender = 1 or receiver = 1 
+0

Я предпочитаю это решение! – sgeddes

+0

Я бы не предпочел, потому что, если вы задумчиво разработали свою таблицу, у вас, вероятно, есть индексы для полей «получатель» и «отправитель», и этот выбор будет игнорировать их точно. –

+0

@ Gordon Linoff, это фантастика ..... –

Смежные вопросы