我正在尝试为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;
此查询运行,但不显示任何内容。
答案 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 NOT
与NULL
进行比较
答案 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