MySQL-如何比较两个表之间的公共值

MySQL-如何比较两个表之间的公共值,mysql,sql,Mysql,Sql,我有两张桌子 表FRIENDS-列/值 身份证,朋友身份证,朋友姓名 1,34,达蒙 1,17,RICHARD 1,56,丹尼尔 1,65,查理 2,15,普里西拉 2,17,RICHARD 2,45,约翰 2,56,丹尼尔 表用户-列/值 用户ID、名称 1、初级 2,萨曼莎 15,普里西拉 45,约翰 56,丹尼尔 如何执行选择查询表FRIENDSwhereFRIENDS.USER\u ID=X中的所有行,并与表USERS中的所有行进行交叉引用,其中FRIENDS.FRIENDS\u ID=

我有两张桌子

FRIENDS
-列/值

身份证,朋友身份证,朋友姓名

1,34,达蒙

1,17,RICHARD

1,56,丹尼尔

1,65,查理

2,15,普里西拉

2,17,RICHARD

2,45,约翰

2,56,丹尼尔

用户
-列/值

用户ID、名称

1、初级

2,萨曼莎

15,普里西拉

45,约翰

56,丹尼尔

如何执行
选择
查询表
FRIENDS
where
FRIENDS.USER\u ID=X
中的所有行,并与表
USERS
中的所有行进行交叉引用,其中
FRIENDS.FRIENDS\u ID=USERS.USER\u ID

基本上,我想查询一个用户的所有朋友(从表
朋友
,由
朋友id
标识),这些朋友也存在于表
用户
(如果他们存在于表f
朋友.朋友id
=
用户.用户id
)中

很抱歉英语不好,这不是我的母语。

第一个解决方案:使用
加入

SELECT f.* 
FROM friends f JOIN users u ON u.USER_ID = f.FRIEND_ID 
                           AND u.USER_ID = '?'
第二种解决方案:使用
存在

SELECT f.* 
FROM friends f 
WHERE EXISTS (SELECT * 
              FROM users 
              WHERE USER_ID = f.FRIEND_ID 
                AND USER_ID = '?')
这种“交叉”数据被恰当地命名为“连接”。连接有不同的风格,但对您来说,一个简单的“内部”连接就足够了:

SELECT
    f.*
FROM
    FRIENDS f
JOIN
    USERS u
    ON
    r.FRIEND_ID = u.USER_ID
WHERE
    f.FRIEND_ID = ...

它被称为
JOIN
。它工作得很好,就像我希望将最后一个子句更改为f.id一样,它在使用左连接时也工作得很好,这样我就可以识别哪些用户不在表中,这也是我需要的,对于MySQL,我有点不知所措,谢谢你的帮助。