2015-11-04 87 views
0

过去几周我一直在使用Microsoft Server Management Studio,并且大部分时间我都能够把所有东西都弄清楚,但有一个主要地区我有困难。我经常被要求运行查询以查找给定名称列表中的人员的特定值。然而,有时我查询的列表中的某些人没有我正在查找的值,所以他们的姓名根本不会返回。TSQL:如果行不存在,则返回'NONE'的值

例如,当我把一个50人的名单来此查询:

SELECT p.name, dbsr.reviewCd 
FROM Person p, DbSpecialReview dbsr 
WHERE p.personId = dbsr.personId 
AND p.name IN (...); 

我可能只能得到值40

我需要的是知道如何运行一个查询等即使只有40/50人拥有与它们相关联的值,查询将返回一个包含其所有名称的表,如果某个人没有值,则会使用“无”或“空”填充相关列。

+3

这是一个通用的SQL问题,不是特定于SQL Server的。您应该使用LEFT JOIN。通常,您使用的语法已被弃用,并且JOINS是...的首选方式...如果您需要,可以加入相关表格 –

+0

http://www.w3schools.com/sql/sql_join_left.asp。 –

+0

@PanagiotisKanavos请不要删除可能会帮助用户给出正确答案的标签。 –

回答

0
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 (...); 
+0

你需要将'AND'切换到'WHERE',否则这个工作完美无缺,感谢我的帮助! –

+0

@JoshKraushaar它可以在'AND'或'WHERE'子句中使用。 –

+1

建议在这里使用COALESCE,而不是ISNULL。 – pmbAustin