2015-03-11 1 views
2

У меня есть таблица, представляющая дружбу, которая выглядит следующим образомИспользуйте один и тот же подзапрос 2 раза в одном запросе с MySQL

+--------+--------+ 
| user_1 | user_2 | 
+--------+--------+ 
| 1  | 5  | 
| 2  | 67  | 
| 3  | 23  | 
| ... | ... | 
+--------+--------+ 

Я хочу, чтобы создать процедуру для получения друзей друзей (но прямые друзья могут» t быть включенным в результаты). Я достиг этого, выполнив следующие действия: (скажем, мы хотим друзей друзей пользователя 5)

SELECT user_2 
FROM friends 
WHERE user_1 IN (
    SELECT user_2 
    FROM friends 
    WHERE user_1=5 
) AND user_2 NOT IN (
    SELECT user_2 
    FROM friends 
    WHERE user_1=5 
) 

Но повторение меня раздражает. Как я могу сделать то же самое без избыточности?

Я знаю, что ответ прост, но я не могу наложить на него свой палец. Я пробовал использовать псевдонимы без каких-либо успехов. Благодаря!

ответ

1

Что-то похожее на это работает для меня:

SELECT user_2 
FROM friends, 
(SELECT user_2 FROM friends WHERE user_1=5) USER2Alias 
WHERE user_1 IN (USER2Alias.user_2) AND user_2 NOT IN (USER2Alias.user_2) 
+0

Я забыл».user2" на псевдоним, вот почему он не работает спасибо! –

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