2016-11-27 156 views
1

我想知道當兩個列的類型相同時,如何用主鍵值替換外鍵值。用主鍵替換外鍵

表1:用戶user_iduser_name

表2:關注user_namefollowed_user_name

(假設名稱是唯一的)

我想創建一個查詢來獲得同樣的事情, 表2但改變每個user_nameidfollower_user_nameid。我很困惑,因爲它們都屬於同一類型。

我有什麼至今:

SELECT 
    table1.user_id, 
    table2.follower_user_name #This needs to be replaced 
FROM table2 
INNER JOIN table1 
    ON table2.user_name = table1.user_name 

PS:這是我使用的數據庫,我沒有設計它。不知道他們爲什麼不在隨從表中使用ID。

回答

1

您可以在users兩次用戶名被跟隨用戶的名字加入followers,一次一次:

SELECT u1.id, u2.id 
FROM followers f 
JOIN users u1 ON u1.user_name = f.user_name 
JOIN users u2 ON u2.user_name = f.followed_user_name 
+0

我強烈建議不要依賴從左到右的列順序來賦予意義。你也重命名了OP的表名(可能是件好事)。 – onedaywhen

+0

@onedaywhen這些是問題文本中給出的名稱,儘管OP的鱈魚片段與它之前的文本不匹配。 – Mureinik

1

我找到接受的答案有點怪:有兩個屬性的結果一樣的名字?!不用說這樣的結果是非關係的。

如果你接受,我們需要使用rename關係運算符(稱爲SQL AS),那麼我們可以把運行到一個表表達式,這將使使用NATRUAL JOIN,這使我們relationlanders高興:

SELECT user_id, follower_user_id 
    FROM table2 
     NATURAL JOIN table1 
     NATURAL JOIN 
     (SELECT user_id AS follower_user_id, 
       username AS follower_user_name 
      FROM table1) f;