2014-04-03 179 views
-5

我正在研究SQL语法来编写Join查询。 我无法得到预期的输出,我请求专家来帮助我。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 
+3

和你的问题是什么? – KrazzyNefarious

+0

我无法获得预期的输出。这是一种充分加入。那就是我的问题 – goofyui

+2

到目前为止你尝试过什么?你能用文字解释你的预期结果吗?我不清楚你在努力达到什么目的。 –

回答

1

您的问题来自SELECTtable_2声明中的列,该列没有存在于table_1中的行的值。您需要更改SELECT Table_2.ScriptNumberSELECT Table_1.ScriptNumber

作为日后参考确保您始终从LEFT表,只有你从RIGHT表需要列选择的所有相关列。否则,您最终会得到更少的行,而不是具有存在于LEFT表中的数据。

1

左连接可以让您在TABLE_1想要的记录和任何相关的细节,可能在TABLE_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 

这种存在这里有用一个描述也有助于你的问题。

+0

它返回预期的记录。谢谢。只要incase,如果我想查看只有空值的记录。我应该如何调整我的查询。不使用where条件等于null – goofyui