Помогите с простым оператором SQL - PullRequest
0 голосов
/ 30 апреля 2011

У меня есть таблица пользователя и таблица user_friend. user_friend показывает, с кем я дружу (так что это uid и fid). Я хочу получить информацию обо всех моих друзьях, поэтому я сделал:

SELECT UID, Name FROM user WHERE UID = (SELECT FID FROM user_friend WHERE UID = 567445724);

но он дает мне подзапрос, возвращает более 1 строки, как мне изменить этот запрос?

Ответы [ 5 ]

3 голосов
/ 30 апреля 2011

Вы должны попробовать ПРИСОЕДИНИТЬСЯ, как

select u.uid,u.name 
   from user u join user_freinds uf on u.uid=uf.fid 
        where u.uid=567445724
2 голосов
/ 30 апреля 2011
SELECT UID, Name FROM user
WHERE UID IN (SELECT FID FROM user_friend WHERE UID = 567445724);`

В качестве альтернативы в MySQL я вспоминаю, что читал, что объединения часто намного быстрее, чем подвыборы.Так что возможно:

SELECT user.UID, user.Name FROM user, user_friend WHERE user.UID = user_friend.FID AND user_friend.UID = 567445724;

0 голосов
/ 30 апреля 2011
select user.uid, user.name from user, user_friends 
where user.uid=user_friends.fid 
  and user.uid=567445724
0 голосов
/ 30 апреля 2011

Используйте IN вместо равно:

SELECT UID, Name FROM user WHERE UID IN (SELECT FID FROM user_friend WHERE UID = 567445724);
0 голосов
/ 30 апреля 2011

Вы должны использовать ключевое слово in.

SELECT UID, Name FROM user WHERE UID IN (SELECT FID FROM user_friend WHERE UID = 567445724);
...