我有两张桌子。
TABLE FRIENDS
- 列/值
ID,FRIEND_ID,FRIEND_NAME
1,34,DAMON
1,17,理查德
1,56,DANIEL
1,65,查理
2,15,PRISCILA
2,17,RICHARD
2,45,JOHN
2,56,DANIEL
TABLE USERS
- 列/值
USER_ID,NAME
1,JUNIOR
2,SAMANTHA
15,PRISCILA 45,约翰 56,丹尼尔
如何SELECT
查询表FRIENDS
中friends.USER_ID = X
的所有行,并与表USERS
中friends.FRIEND_ID = users.USER_ID
的所有行进行交叉引用}}
基本上我想查询表FRIENDS
中也存在的用户的所有朋友(来自表friend_id
,由USERS
标识)(如果它们存在于表f中) riends.FRIEND_ID
= users.USER_ID
)。
抱歉英语不好,不是我的母语。
答案 0 :(得分:2)
第一个解决方案: 使用JOIN
SELECT f.*
FROM friends f JOIN users u ON u.USER_ID = f.FRIEND_ID
AND u.USER_ID = '?'
第二个解决方案: 使用EXISTS
SELECT f.*
FROM friends f
WHERE EXISTS (SELECT *
FROM users
WHERE USER_ID = f.FRIEND_ID
AND USER_ID = '?')
答案 1 :(得分:2)
这种“交叉”的数据恰如其分地命名为“JOIN”。有不同的JOIN口味,但对你来说,一个简单的“内部”连接就足够了:
SELECT
f.*
FROM
FRIENDS f
JOIN
USERS u
ON
r.FRIEND_ID = u.USER_ID
WHERE
f.FRIEND_ID = ...