当前位置: 首页 > 面试题库 >

SQL Server查询-如果不匹配,则返回空值

上官锦
2023-03-14
问题内容

我遇到了由于某种原因无法解决的问题。我正在尝试编写一个连接两个表的查询,其中在一个表中可能找不到匹配项。如:

SELECT 
    Table1.IDField, Table2.IDField
FROM 
    Table1
LEFT OUTER JOIN 
    Table2 ON Table1.PersonID = Table2.PersonID
WHERE 
    (Table1.IDField = '12345')
    AND (Table2.Category = 'Foo')

如果中没有匹配项Table2,则不返回任何内容。但是,如果没有匹配项,我仍然需要为该列返回NULL,并且仍从返回值Table1

我已经改变了JOIN所有我能想到的,但无济于事。

Table2.Category可以包含多个其他值,因此OR IS NULL无法进行某种交易。

因此,如果没有匹配Table2.Category = 'Foo',我仍然需要它返回:

Table1 | Table2
----------------
 12345 |  NULL

有什么建议?


问题答案:

将for的条件table2移出WHERE子句并移至您的JOIN

SELECT 
    Table1.IDField, Table2.IDField
FROM 
    Table1
LEFT OUTER JOIN Table2 
    ON Table1.PersonID = Table2.PersonID
    AND Table2.Category = 'Foo'
WHERE 
    Table1.IDField = '12345'


 类似资料:
  • 我在一个更大的脚本中有一段代码,它只是根据匹配将值分配给“i”。这个想法是,如果找到输入的值,我希望它给出匹配值,如果没有,则为0。如果它是0,我可以然后退出子消息给用户。然而,任何时候匹配找到一个空值,它只是杀死子,而不是作为我介绍的iferror的一部分来处理。我尝试过各种检查方式(例如使用iif(isfalse)),但似乎都不起作用。 导致问题的代码如下所示: 我是一个模糊的整数 用户名是一

  • 我正在玩mongob,并将一些测试数据{name:"david"}输入到“用户”集合中。我通过键入mongoshell验证了数据在MongoDB中 结果: 在 node.js 脚本中,使用以下代码: 不返回任何结果 我没有发现任何错误,也没有错误。请告知

  • 我有下面的SQL查询,我在flink工作中使用。< code>mysql_table是使用JDBC连接器创建的,而< code>kafa_source表是从传入的kafka流创建的。 我在两者之间执行时态连接,当我在Flink的sql-client CLI中检查时,运行良好(用< code>flink-faker测试)。内部查询工作得非常好,并且正在打印结果。有人能帮助我找出这个问题吗? 编辑:我

  • 在我的弹性搜索数据库中插入6条记录后,我正在尝试一个弹性搜索示例。

  • 当我控制台下面的两个数组是如何看 在两个数组中,349都是匹配的,匹配后应返回1。下面是我如何尝试的 它不匹配任何人都能给出解决方案!!!!