2014-05-15 99 views
-4

我有兩個表。MySQL - 如何比較兩個表之間共同的值

TABLE FRIENDS - 列/價值觀

ID,FRIEND_ID,FRIEND_NAME

1,34,DAMON

1,17,RICHARD

1,56,DANIEL

1,65,CHARLIE

2,15,PRISCILA

2,17,RICHARD

2,45,JOHN

2,56,DANIEL

TABLE USERS - 列/價值觀

USER_ID,名稱

1,普通

2,SAMANTHA

15,PRISCILA

45,JOHN

56,DANIEL

我如何做一個SELECT是查詢所有行表FRIENDS其中friends.USER_ID = X,與表USERS其中所有行交叉引用。

基本上我想查詢用戶(從表FRIENDS,通過friend_id標識)的所有朋友說,也存在於表USERS(如果它們存在於表中˚Friends.FRIEND_ID = users.USER_ID)。

對不起,我的英語不好,這不是我的母語。

+0

它被稱爲'JOIN'。 –

回答

2

該數據的 「橫」 被恰當地命名爲一 「加入」。有不同的JOIN風格,但對你來說,一個簡單的「內部」加入就足夠了:

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

它工作得很好,他們的方式,我想改變最後一個條款爲f.id,它也很好地與一個左連接,所以我可以確定誰不在桌子上用戶,我也需要,我有點當涉及到MySQL的時候,這是一個noob,感謝您的幫助。 –

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 = '?')