SELECT MIN(retail)
FROM books
WHERE category = 'COMPUTER'
работает нормально, но когда я включаю заголовок в select, например:
SELECT MIN(retail), title
FROM books
WHERE category = 'COMPUTER'
это не так. Почему? Как заставить это работать?
SELECT MIN(retail)
FROM books
WHERE category = 'COMPUTER'
работает нормально, но когда я включаю заголовок в select, например:
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)
Пример, который я использовал для подтверждения синтаксиса.
MIN применяется к группе записей, поэтому вам нужно указать, какую группу записей вы имеете в виду.
Если вы имеете в виду для каждого наименования показывать минимум розницы, то вам нужно:
SELECT MIN(retail), title FROM books
WHERE category = 'COMPUTER'
GROUP BY title