罗斯文数据库 | SQL 查询 returns 名员工及其报告对象

Northwind database | SQL query that returns employees and who they report to

我正在尝试为 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;

此查询运行,但未显示任何内容。

你应该试试:

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)

如果你用的是sql server,默认是set ANSI_NULLSON,需要用IS/IS NOTNULL比较

尝试 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;
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