我需要你的帮助,这是我的问题:
我有2张桌子
Friends
----------------------------------------
friends_club_1 | friends_club_2 | state
1234 4321 1
2345 1234 1
1234 4567 1
4569 1567 1
User Info
-----------------------------------------------
id | name | surname | age |
2345 Jhonny Jenny 24
4567 Linda Minda 23
1567 Stefan Refan 25
1234 me me 23
4569 dani mari 28
4321 Star Gate 24
我想得到以下结果:
Result
-----------------------------------------------------
my_friends | state | name | surname | age
4321 1 Star Gate 24
2345 1 Jhonny Jenny 24
4567 1 Linda Minda 23
1567 1 Stefan Refan 25
ecc....
我想知道我的身份1234这个结果 我希望有人帮助你,谢谢你
答案 0 :(得分:0)
我猜是像
SELECT UserInfo.*
FROM UserInfo
LEFT JOIN Friends ON (UserInfo.id IN (friends_club1, friends_club2))
WHERE UserInfo.id = 1234
答案 1 :(得分:0)
你去吧
SELECT u.id AS my_friends ,u.state, u.name, u.surname , u.age FROM user_info u
INNER JOIN friends f1(u.id = f1.friends_club_1)
INNER JOIN friends f2(u.id = f2.friends_club_2)
WHERE f1.friends_club_1=1234 OR f2.friends_club_2=1234
或者通过子查询,你可以像
那样做SELECT u.id AS my_friends ,u.state, u.name, u.surname , u.age FROM user_info u
WHERE u.id IN(SELECT friends_club_1 FROM friends WHERE friends_club_2=1234) OR
u.id IN(SELECT friends_club_2 FROM friends WHERE friends_club_1=1234)
希望它有意义
注意:请勿使用列名和表名中的空格
答案 2 :(得分:0)
您可以使用JOIN
将表格与UNION
相结合,以处理这两种情况。
SELECT uf.*, f.state
FROM User_Info u
INNER JOIN Friends f
ON f.friends_club_1 = u.id
INNER JOIN User_Info uf
ON uf.id = f.friends_club_2
WHERE u.id = 1234
UNION
SELECT uf.*, f.state
FROM User_Info u
INNER JOIN Friends f
ON f.friends_club_2 = u.id
INNER JOIN User_Info uf
ON uf.id = f.friends_club_1
WHERE u.id = 1234
答案 3 :(得分:0)
您的结果不正确,“Stefan Refan”不会出现在结果中。
SELECT UI.id AS my_friends,
COALESCE(F1.state,F2.state) AS state,
UI.name, UI.surname, UI.age
FROM [User Info] as UI
LEFT OUTER JOIN [Friends] AS F1 ON (UI.id = F1.friends_club_1)
LEFT OUTER JOIN [Friends] AS F2 ON (UI.id = F2.friends_club_2)
WHERE COALESCE(F1.friends_club_2,F2.friends_club_1) = 1234;
您需要合并F1.state和F2.state以查找使用的是哪一个。