返回匹配和不匹配记录的SQL联接查询
我正在使用SQL语法编写联接查询。 我无法获得预期的输出,请专家帮助我返回匹配和不匹配记录的SQL联接查询,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在使用SQL语法编写联接查询。 我无法获得预期的输出,请专家帮助我 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
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
在这里,左连接可能有助于获取表_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
这样的描述对您的问题也很有帮助。您的问题来自于在表2中的SELECT语句中包含列,这些列没有表1中存在的行的值。您需要将SELECT Table_2.ScriptNumber更改为SELECT Table_1.ScriptNumber
作为将来的参考,请确保始终从左表中选择所有相关列,并且只从右表中选择所需的列。否则,将得到更少的空行,而不是左表中的数据 你的问题是什么?到目前为止你试过什么?你能用语言解释你的预期结果吗?我不清楚您想要实现什么。@goofyui这不是问题。@goofyui添加SQL代码为什么您不希望结果中出现200。若执行左联接,它将从左表中获取所有行,并且只从右表中获取匹配的行。你也可以把你现在得到的作为输出添加进去。它会返回预期的记录。非常感谢。以防万一,如果我想查看只有空值的记录。我应该如何调整我的查询。不使用where条件等于null