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

时间:2014-05-15 18:17:28

标签: mysql sql

我有两张桌子。

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查询表FRIENDSfriends.USER_ID = X的所有行,并与表USERSfriends.FRIEND_ID = users.USER_ID的所有行进行交叉引用}}

基本上我想查询表FRIENDS中也存在的用户的所有朋友(来自表friend_id,由USERS标识)(如果它们存在于表f中) riends.FRIEND_ID = users.USER_ID)。

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

2 个答案:

答案 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 = ...