我有兩個表,Writer和Books。作家可以製作許多書籍。我想讓所有全部作家誰生產最大數量的書籍。SQL查詢:擁有number = max(number)不起作用
首先,我的sql查詢是這樣的:
SELECT Name FROM(
SELECT Writer.Name,COUNT(Book.ID) AS NUMBER FROM Writer,Book
WHERE
Writer.ID=Book.ID
GROUP BY Writer.Name
)
WHERE NUMBER=(SELECT MAX(NUMBER) FROM
(SELECT Writer.Name,COUNT(Book.ID) AS NUMBER FROM Writer,Book
WHERE Writer.ID=Book.ID
GROUP BY Writer.Name
)
它的工作原理。不過,我認爲這個查詢太長,並且存在一些重複。我想讓這個查詢更短。所以,我嘗試另一個這樣的查詢:
SELECT Name FROM(
SELECT Writer.Name,COUNT(Book.ID) AS NUMBER FROM Writer,Book
WHERE
Writer.ID=Book.ID
GROUP BY Writer.Name
HAVING NUMBER = MAX(NUMBER)
)
然而,這HAVING子句不工作,我的sqlite的說,它的錯誤。 我不知道爲什麼。任何人都可以向我解釋?謝謝!
你應該學會在查詢中使用明確的'JOIN'語法。 –