我在「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
請將您的問題標題描述爲描述您實際問題的內容。 「我有一個我不明白的錯誤,你能幫我嗎?」對於未來的讀者來說,在試圖解決他們的問題時在搜索結果中找到它是完全沒有用的,並且它不會提供任何關於您在此問的問題的信息。 –