0

我有两张桌子:dba_accountdba_account_password。现在我正在尝试从两个表中填充信息。我正在使用这个查询。

SELECT da.account_name, da.account_id, da.status, da.manager_firstname, 
dap.live_password_change, dap.dev_password_change FROM dba_account da INNER JOIN 
dba_account_password dap ON da.account_id = dap.account_id

现在,问题是 dba_account 有 1328 条记录(account_name),而 dba_account_password 只有 270 条记录。当我运行这个查询时,它只显示 270 条记录。但我也想显示其他用户名(不在 dba_account_password 中的用户名)。有什么建议么?

4

2 回答 2

2

更改为LEFT JOIN

SELECT da.account_name, 
    da.account_id, 
    da.status, 
    da.manager_firstname, 
    dap.live_password_change, 
    dap.dev_password_change 
FROM dba_account da 
LEFT JOIN dba_account_password dap 
    ON da.account_id = dap.account_id

AnINNER JOIN只会为您提供两个表中匹配的记录。这是一个很好的连接视觉解释

于 2012-09-10T16:48:13.763 回答
1

在这种情况下,您可以使用左连接

SELECT da.account_name, da.account_id, da.status, da.manager_firstname, 
dap.live_password_change, dap.dev_password_change FROM dba_account da LEFT JOIN 
dba_account_password dap ON da.account_id = dap.account_id

左连接小说明

**

table 1
userid  username
1        ABC
2        PQR
3        DEF
table2
userid  userRole
1       ACCOUNTANT
2       HO

RESULT OF LEFT JOIN :-

 left join on table1.userid=table2.userid
    userid   username  userrole
    1        ABC        ACCOUNTANT
    2        PQR        HO
    3        DEF

** 
于 2012-09-10T17:14:14.003 回答