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