2015-11-04 79 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

相關問題