Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TSQL:返回值';无';如果行不';不存在_Sql_Sql Server - Fatal编程技术网

TSQL:返回值';无';如果行不';不存在

TSQL:返回值';无';如果行不';不存在,sql,sql-server,Sql,Sql Server,在过去的几周里,我一直在与微软服务器管理工作室(MicrosoftServerManagementStudio)合作,在很大程度上,我能够解决所有问题,但有一个主要方面我遇到了困难。我经常被要求运行查询,以在给定的姓名列表中找到特定的人的值。但是,有时我查询的列表中的一些人没有我要查找的值,因此根本不会返回他们的名字 例如,当我将50人的列表放入此查询时: SELECT p.name, dbsr.reviewCd FROM Person p, DbSpecialReview dbsr WHERE

在过去的几周里,我一直在与微软服务器管理工作室(MicrosoftServerManagementStudio)合作,在很大程度上,我能够解决所有问题,但有一个主要方面我遇到了困难。我经常被要求运行查询,以在给定的姓名列表中找到特定的人的值。但是,有时我查询的列表中的一些人没有我要查找的值,因此根本不会返回他们的名字

例如,当我将50人的列表放入此查询时:

SELECT p.name, dbsr.reviewCd
FROM Person p, DbSpecialReview dbsr
WHERE p.personId = dbsr.personId 
AND p.name IN (...);
我可能只得到40的值


我需要知道如何运行查询,这样即使只有40/50的人有与他们相关联的值,查询也会返回一个包含他们所有姓名的表,如果一个人没有值,它会在相关列中填充“None”或“Null”。

这是一个通用的SQL问题,不是SQL Server特有的。你应该使用左连接。通常,您使用的语法已被弃用,联接是。。。如果您需要连接相关的表,请举例说明。@PanagiotisKanavos请不要删除可能帮助用户给出适当答案的标记。我知道左连接和连接。。。但我想我的技能是不够的。我认为问题在于,当我试图在没有任何运气的情况下找到我想要的东西时,我一直在使用“LEFT OUTER JOIN”(我没有将它包括在我发布的超级简单的示例查询中,因为在尝试了很多次但没有成功后,我认为它不相关),你需要将“AND”切换到“WHERE”,但除此之外,这非常有效,谢谢你的帮助,伙计@JoshKraushaar它可以在
WHERE
子句中工作。建议在这里也使用COALESCE,而不是ISNULL。@JoshKraushaar。你的建议不正确。阿里先生。你也错了。
WHERE
子句是正确的逻辑。@GordonLinoff将条件添加到
ON
子句中,它会返回错误的结果吗?或者把它放在
WHERE
子句中会有任何好处?
SELECT p.name, ISNULL(dbsr.reviewCd , 'None') AS reviewCd
FROM Person p
LEFT JOIN DbSpecialReview dbsr ON p.personId = dbsr.personId 
                              AND p.name IN (...);