Northwind数据库| SQL查询,返回员工及其报告对象
我正在尝试为Northwind数据库编写一个查询,其中列出了员工及其经理的姓名,但不包括没有人向其报告的员工 以下是我目前掌握的情况: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
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