SQL Join查询返回匹配和不匹配的记录

时间:2014-04-03 20:04:02

标签: sql sql-server sql-server-2008

我正在编写SQL语法来编写Join查询。 我无法获得预期的输出,我请专家帮助我。

Table: Table1

ScriptNumber    Date Filled    RefillsLeft
100               01/02/2014      1
200               01/03/2014      0
300               01/22/2014      3


Table : Table 2 

ScriptNumber    Date Filled    RefillsLeft
100               02/02/2014      0

Expected output

ScriptNumber    Date Filled    RefillsLeft
100               02/02/2014      0
300               null            null

SQL语句

SELECT Table_2.ScriptNumber
       ,Table_2.DateFilled
       ,Table_2.RefillsLeft
    FROM Table_1
    LEFT JOIN Table_2
        ON Table_1.ScriptNumber = Table_2.ScriptNumber

2 个答案:

答案 0 :(得分:1)

此处左侧连接可用于获取Table_1中所需的记录以及表_2中可能的所有相关详细信息

select Table_1.ScriptNumber
    , Table_2.DateFilled
    , Table_2.RefillsLeft
from Table_1
    left join Table_2 on Table_1.ScriptNumber = Table_2.ScriptNumber
where Table_1.RefillsLeft > 0

这样的描述对你的问题也有帮助。

答案 1 :(得分:1)

您的问题来自于SELECT来自table_2的{​​{1}}语句中的列,这些列没有table_1中存在的行的值。您需要将SELECT Table_2.ScriptNumber更改为SELECT Table_1.ScriptNumber

作为未来参考,请务必始终从 LEFT 表中选择所有相关列,并且只从 RIGHT 表中选择所需的列。否则,您最终会使用较少的 NULL 行,而不是拥有 LEFT 表中的数据。