0

user テーブルと user_friend テーブルがあります。user_friend は、私が誰と友達であるかを示します (つまり、uid と fid です)。すべての友達の情報を取得したいので、次のようにしました。

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

しかし、サブクエリが複数の行を返します。このクエリをどのように変更すればよいですか?

4

5 に答える 5

3

JOIN のように試してみてください

select u.uid,u.name 
   from user u join user_freinds uf on u.uid=uf.fid 
        where u.uid=567445724
于 2011-04-30T16:04:02.013 に答える
2
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;

于 2011-04-30T16:03:26.120 に答える
0

inキーワードを使用する必要があります。

SELECT UID, Name FROM user WHERE UID IN (SELECT FID FROM user_friend WHERE UID = 567445724);
于 2011-04-30T16:03:27.263 に答える
0

等号の代わりに IN を使用します。

SELECT UID, Name FROM user WHERE UID IN (SELECT FID FROM user_friend WHERE UID = 567445724);
于 2011-04-30T16:03:59.540 に答える
0
select user.uid, user.name from user, user_friends 
where user.uid=user_friends.fid 
  and user.uid=567445724
于 2011-04-30T16:08:50.023 に答える