我使用的是SQL Server 2014
,我有一个简单的T-SQL
查询(如下所示)及其相应的输出。
use mydatabase
select *
from Table1
where ID in (101, 102, 103)
输出如下(表示Table1中不存在ID 102 ):
ID Age
101 46
103 50
我希望输出如下所示:
ID Age
101 46
102 0
103 50
当查找表中的ID不匹配时,输出将忽略这些ID。如何更改我的T-SQL
查询,以确保也输出不匹配的ID,但输出的ID为零。
发布于 2017-12-11 10:10:49
如果您有两个或多个表,并且希望在一个表中找不到匹配项的情况下显示一些默认值,则可以在SQL中使用外部联接。
例如:
我有两张桌子TableA和TableB。
当我执行内部连接时,我将获得在两个表中都有匹配的记录。假设我需要从两个表中选择id 1、2和3,并且即使TableB中不存在一个id,我也希望记录为NULL,那么我可以使用以下命令
select
A.Id,
A.Name,
Age = ISNULL(B.Age,0)
from TableA a
left join TableB b
on A.id = b.id
如果在tableB中没有与id匹配的记录,则年龄将显示为0
发布于 2017-12-11 10:10:03
如果没有包含您正在查找的值的表,则可以使用join
,并在coalesce()
或isnull()
函数的帮助下将不匹配的值替换为0
select a.id, coalesce(t.age, 0) [Age] from <table> t
right join (
values (101), (102), (103)
) a(id) on a.id = t.id
结果:
id Age
101 46
102 0
103 50
发布于 2017-12-11 10:10:55
SELECT T0.ID
ISNULL(T1.Age,0) AS Age
FROM Table0 T0
LEFT JOIN Table1 T1 ON T0.ID = T1.ID
WHERE T0.ID IN (101,102,103);
https://stackoverflow.com/questions/47750272
复制相似问题