2016-11-21 149 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;