Northwind数据库| SQL查询,返回员工及其报告对象

Northwind数据库| SQL查询,返回员工及其报告对象,sql,northwind,Sql,Northwind,我正在尝试为Northwind数据库编写一个查询,其中列出了员工及其经理的姓名,但不包括没有人向其报告的员工 以下是我目前掌握的情况: SELECT employees.firstname, employees.lastname, superior.firstname, superior.lastname FROM employees LEFT OUTER JOIN employees superior ON employees.reportsto = superior.employeeID

我正在尝试为Northwind数据库编写一个查询,其中列出了员工及其经理的姓名,但不包括没有人向其报告的员工

以下是我目前掌握的情况:

SELECT employees.firstname, employees.lastname, superior.firstname, superior.lastname
FROM employees 
LEFT OUTER JOIN employees superior ON employees.reportsto = superior.employeeID 
WHERE employees.reportsto <> null;
选择employees.firstname、employees.lastname、superior.firstname、superior.lastname
来自员工
在employees.reportsto=superior.employeeID上左外加入employees superior
其中employees.reports为null;
此查询正在运行,但没有显示任何内容。

您应该尝试:

SELECT employees.firstname, employees.lastname, superior.firstname, superior.lastname
FROM employees 
LEFT OUTER JOIN employees superior ON employees.reportsto = superior.employeeID 
WHERE employees.reportsto IS NOT NULL --or "<> NULL" when ANSI_NULLS is set to OFF ("!=" is specific to SQL server)
选择employees.firstname、employees.lastname、superior.firstname、superior.lastname
来自员工
在employees.reportsto=superior.employeeID上左外加入employees superior
其中employees.reportsto不为NULL——或者在ANSI_NULLS设置为OFF时为“NULL”(“!=”特定于SQL server)

如果您使用的是
sql server
,默认设置是
将ANSI_NULL设置为ON
,则需要使用
is/NOT
NULL

进行比较

SELECT employees.firstname, employees.lastname, superior.firstname, superior.lastname
FROM employees 
LEFT OUTER JOIN employees superior ON employees.reportsto = superior.employeeID 
WHERE employees.reportsto IS NOT NULL;
说明: NULL没有值,因此无法使用标量值运算符进行比较。
我明白了,永远不要尝试将值与null进行比较。正确的答案是:

WHERE employeesAM.reportsto **is not** null;

它是关于不包括员工谁没有人报告,所以它不应该是NULL@RandikaRatnayake,我的视力不好。如果这对你有帮助,请标记为答案:)对不起!另一个人比你快了4分钟,但我真的很感谢你的帮助!如果我能选择多个答案,我绝对会,但再次感谢!)很抱歉反复为你们检查和取消选择答案按钮!我想我可以选择不止一个答案。今天的提示:为两个employees实例声明表别名,以使代码更清晰。只有在将查询选项
设置为OFF时,才可以使用
=
!=
)与
NULL
进行比较
SELECT empa.employeeid, 
       empa.firstname, 
       empa.lastname, 
       empb.firstname AS 'Reports to Manager' 
FROM   employees empa 
       INNER JOIN employees empb 
               ON empa.reportsto = empb.employeeid