SELECT MIN(retail)
FROM books
WHERE category = 'COMPUTER'
工作正常,但是當我包括選擇像標題:ORA-00937:不是單組分組函數
SELECT MIN(retail), title
FROM books
WHERE category = 'COMPUTER'
事實並非如此。爲什麼?如何使它工作?
SELECT MIN(retail)
FROM books
WHERE category = 'COMPUTER'
工作正常,但是當我包括選擇像標題:ORA-00937:不是單組分組函數
SELECT MIN(retail), title
FROM books
WHERE category = 'COMPUTER'
事實並非如此。爲什麼?如何使它工作?
里斯的答案是正確的,如果這是你的意思,但你可能想要的title
(S)其中retail=MIN(retail)
,而且措辭暗示如何得到這個問題的答案:
SELECT title, retail
FROM books
WHERE category = 'COMPUTER'
AND retail = (SELECT MIN(retail) FROM books WHERE category = 'COMPUTER')
爲了減少重複,您可以使用一個WITH
條款(如果你使用的是最新版本的SQL):
;WITH ComputerBooks AS (
SELECT title, retail
FROM books
WHERE category = 'COMPUTER')
SELECT title, retail
FROM ComputerBooks
WHERE retail = (SELECT MIN(retail) FROM ComputerBooks)
這就是我的意思。 – user490735 2011-04-14 20:14:25
爲什麼需要這種重複的結構? – user490735 2011-04-14 20:16:42
它看起來像我必須指定每個列的條件,然後更一般的條件(標題FROM書籍 WHERE category ='COMPUTER')被縮小爲更具體。但是爲什麼沒有語法允許從給定一個列的特定條件的檢索記錄中指定其他列? – user490735 2011-04-14 20:23:34
MIN適用於一組記錄,所以你需要告訴它你的意思是哪組記錄。
如果你的意思是爲每個標題,顯示最低零售的,那麼你需要:
SELECT MIN(retail), title FROM books
WHERE category = 'COMPUTER'
GROUP BY title
你會希望它做的,用簡單的英語具體是什麼? – 2011-04-08 17:34:58
可能重複的[SQL不是單組功能](http://stackoverflow.com/questions/1795198/sql-not-a-single-group-group-function) – 2012-02-17 22:06:55