我在数据库中有两个表。一个存储唯一的userNames和一个唯一的id,另一个存储来自上一个表的用户是“朋友”:ex:
table users:
id | username
---------------
100 | aaa
200 | bbb
300 | ccc
table friends:
id | user | friend
-------------------
1 | 100 | 200
2 | 300 | 100
3 | 300 | 200
与上述示例中一样,用户100是300和200的朋友。 我想显示一个包含所有用户100个朋友的列表。请记住,他可以出现在两列(用户和朋友)的“朋友”表中。无法弄清楚查询应该是什么样子。我尝试的一切,它重复行和诸如此类的东西。
我知道这很微不足道,但我是新手。
答案 0 :(得分:1)
试试这个:
Select distinct u.id, u.username
from Users u
inner join Friends f on u.id = f.id
where f.friend = 100
UNION ALL
Select distinct u.id, u.username
from Users u
inner join Friends f on u.id = f.id
where f.user = 100
或者:
Select distinct u.id, u.username
from Users u
inner join Friends f on u.id = f.id
where f.user = 100 or f.friend = 100
答案 1 :(得分:1)
这不会重复
SELECT distinct id FROM(
SELECT friend as id FROM friends
WHERE user = 100
UNION ALL
SELECT user as id FROM friends
WHERE friend = 100) ;
答案 2 :(得分:1)
尝试以下:
Select distinct u.id, u.username
from Users as u
left join Friends as f on (u.id = f.user or u.id = f.friend)
where u.id=100