我在“reportsTo”中的内容与employeeNumber类似,所以问题是什么?用于IN子句我有一个错误,我不明白。你可以帮我吗?
SELECT firstName,lastName,temp.count
FROM employees
where employeeNumber in(
SELECT reportsTo, COUNT(*) AS count
FROM employees
GROUP BY reportsTo
) as temp
我在“reportsTo”中的内容与employeeNumber类似,所以问题是什么?用于IN子句我有一个错误,我不明白。你可以帮我吗?
SELECT firstName,lastName,temp.count
FROM employees
where employeeNumber in(
SELECT reportsTo, COUNT(*) AS count
FROM employees
GROUP BY reportsTo
) as temp
子查询不能返回多列,所以你不能有SELECT reportsTo, COUNT(*) AS count
里面。您可能想要加入子查询,如下所示:
SELECT firstName,lastName,temp.count
FROM employees
INNER JOIN (
SELECT reportsTo, COUNT(*) AS count
FROM employees
GROUP BY reportsTo
) temp ON employees.employeeNumber = temp.reportsTo
声明:我不使用MySQL,因此上述语法可能不准确。
您可能会遇到问题,试图使用count
作为列名。重命名或转义它(SQL Server使用[
和]
,不确定MySQL)。
谢谢!但我的意思是,类似的加入,所以请解释我的差异,因为我没有得到它... – user3374271
真的不知道你wan't什么,但只是将其更改为:
SELECT firstName,
lastName
FROM employees
WHERE employeeNumber in(SELECT reportsTo
FROM employees
GROUP BY reportsTo)
删除计数和别名会工作,但我觉得你真正想要的是:
SELECT manager.firstName,
manager.lastName,
temp.count AS number_of_directs
FROM (SELECT reportsTo,
COUNT(*) AS count
FROM employees
GROUP BY reportsTo) as temp
INNER JOIN employees AS manager ON manager.reportsTo = temp.reportsTo
你告诉我们。你得到的错误是什么? –
EmployeeNumber **不能**两个不同的两列不同的列,或者在你的情况下列和计算值。 – Zane
请将您的问题标题描述为描述您实际问题的内容。 “我有一个我不明白的错误,你能帮我吗?”对于未来的读者来说,在试图解决他们的问题时在搜索结果中找到它是完全没有用的,并且它不会提供任何关于您在此问的问题的信息。 –