2016-11-21 116 views
0

我在mysql數據庫2個表時:帳戶和用戶2選擇1查詢結果在4個結果預計2個結果

帳戶看起來是這樣的:enter image description here

用戶是這樣的:enter image description here

我要選擇兩個表ACCOUNTID和用戶名和得到的結果,像這樣:

accountid || userid 
7   22 
29   44  

我不明白爲什麼它給ŝ我4個結果像這樣:

enter image description here

+0

好了,我們不知道相同的名稱。如果沒有ON條件,table1中的每一行都與table2中的每一行連接。 – Seb

+0

你是對的!我混合了「自然」加入..我要刪除它以避免其他人的錯誤 – Delphine

+0

提供您的數據庫模式,並說明爲什麼'accountid = 7'鏈接到'userid = 22'但不是44? – Alex

回答

1

根據你的截圖你有username鏈接,這是非常差的db設計。

所以你應該改變你的模式,並使用user.id鏈接你的表格。

但到目前爲止,您的查詢是:

SELECT accounts.accountid, users.userid 
FROM accounts 
LEFT JOIN users 
ON accounts.username=users.username 
+0

這個語法做我需要的,我已經考慮到你提到的FK。謝謝 –

0

我們不知道到底是我們的表結構,但你definitly失蹤接通部分的加入

SELECT accounts.accountid,users.userid FROM賬戶 INNER JOIN用戶ON users.userid = accounts.userid

或任何你想比較

0

我相信你缺少的 'ON'語法的一部分,這給一試:

SELECT accounts.accountid, users.userid 
FROM accounts 
INNER JOIN users 
ON accounts.userid=users.userid; 

請確保您有「用戶ID」你的「賬戶」表這個工作,這告訴查詢加入了「用戶ID」兩表中,並應防止任何重複的行。

我希望這有助於!

0

我不知道爲什麼你沒有得到答案,但你應該知道你在這兩個表中有共同的用戶名的一點,所以如果你用這兩個表的用戶名的幫助將表加入表中,

select accountid,userid from Accounts inner join Users where Accounts.username=Users.username;