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

时间:2017-04-17 13:29:26

标签: sql northwind

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

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

4 个答案:

答案 0 :(得分:0)

你应该尝试:

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_NULLS ON,您需要使用IS/IS NOTNULL进行比较

答案 1 :(得分:0)

尝试 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没有值,因此无法使用标量值运算符进行比较。 https://stackoverflow.com/a/5658472/684030

答案 2 :(得分:0)

我明白了,从来没有尝试过将值与null进行比较。正确答案是:

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

答案 3 :(得分:0)

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