如何编写SQL查询以获取同一表中的emp名称和管理器名称?
我有一个员工表: 其中EmpID是主键,ManagerID是外键 我想要这样的输出,如果管理器id为null,则显示No manager: 我写了这个查询如何编写SQL查询以获取同一表中的emp名称和管理器名称?,sql,sql-server,Sql,Sql Server,我有一个员工表: 其中EmpID是主键,ManagerID是外键 我想要这样的输出,如果管理器id为null,则显示No manager: 我写了这个查询 SELECT e1.EmpID, e1.EmpName, e1.ManagerID, ManagerName = CASE WHEN e1.ManagerID = NULL THEN 'No Manager' ELSE
SELECT
e1.EmpID,
e1.EmpName,
e1.ManagerID,
ManagerName = CASE
WHEN e1.ManagerID = NULL THEN 'No Manager'
ELSE e2.EmpName
END
FROM
Emp e1
LEFT JOIN
Emp e2 ON e1.ManagerID = e2.EmpID;
但是我得到了这个输出,我想要“无管理器”来代替NULL
请帮忙
提前感谢不要使用!=用空!正确的语法应该是NOT NULL。但是,请使用内置函数COALESCE:
几乎任何对NULL的操作都返回NULL,包括=和。两个突出的异常是IS NULL和IS NOT NULL。不要使用!=用空!正确的语法应该是NOT NULL。但是,请使用内置函数COALESCE:
几乎任何对NULL的操作都返回NULL,包括=和。两个突出的异常是IS NULL和NOT NULL
零均值未知
尝试使用IS NULL而不是=NULL
注
默认值为on
指定在SQL Server 2017中将Equals=和Not Equal作为比较运算符与空值一起使用时的ISO兼容行为
如果您想使用NULL=NULL,您可以更改设置,尽管我不建议这样做
这是一张设置ANSI_空值的表格
零均值未知
尝试使用IS NULL而不是=NULL
注
默认值为on
指定在SQL Server 2017中将Equals=和Not Equal作为比较运算符与空值一起使用时的ISO兼容行为
如果您想使用NULL=NULL,您可以更改设置,尽管我不建议这样做
这是一张设置ANSI_空值的表格
!= 无效的或者不是空的无效的或者不是空的?谢谢。它也起作用了,谢谢。它也起作用了。
SELECT e1.EmpID, e1.EmpName, e1.ManagerID,
ManagerName = COALESCE(e2.EmpName, 'No Manager')
FROM Emp e1 LEFT JOIN
Emp e2
ON e1.ManagerID = e2.EmpID;
SELECT
e1.EmpID,
e1.EmpName,
e1.ManagerID,
ManagerName = CASE WHEN e1.ManagerID IS NULL THEN 'No Manager'
ELSE e2.EmpName
END
FROM Emp e1 LEFT JOIN Emp e2 ON e1.ManagerID = e2.EmpID;
Boolean Expression SET ANSI_NULLS ON SET ANSI_NULLS OFF
NULL = NULL UNKNOWN TRUE
1 = NULL UNKNOWN FALSE
NULL <> NULL UNKNOWN FALSE
1 <> NULL UNKNOWN TRUE
NULL > NULL UNKNOWN UNKNOWN
1 > NULL UNKNOWN UNKNOWN
NULL IS NULL TRUE TRUE
1 IS NULL FALSE FALSE
NULL IS NOT NULL FALSE FALSE
1 IS NOT NULL TRUE TRUE