У меня есть таблица food
с двумя колонками: fruit
и species
. Каждый вид может иметь несколько строк с разными значениями fruit
. Я хочу найти всех видов, которые едят ровно 1 fruit
, и знать значение fruit
для этих видов.Несколько терминов в запросе HAVING
Этот запрос работал, чтобы найти виды, которые едят только один вид fruit
:
select species
from food
group by species
having count(species) = '1'
Теперь я хотел бы 2 колонки, один species
и другой связанный fruit
. Как выполнить запрос с несколькими терминами в аргументе having
? Я пробовал:
select species, fruit
from food
group by species
having count(species) = '1'
Но получить следующее сообщение об ошибке:
ERROR: column "food.fruit" must appear in the
GROUP BY clause or be used in an aggregate function
LINE 1: select species, fruit
^
Спасибо за вашу помощь!
Просьба не сравнивать номера со строками. '1' - это номер' '1'' - это строковое значение, а не число –
. Разве это не должно быть 'count count (fruit) = 1'? – melpomene
@a_horse_with_no_name Это нормально в SQL или, по крайней мере, PostgreSQL TBH, '' 1'' - это буквально неизвестный тип. На самом деле, _correct_ способ указать литерал 'NUMERIC', например. Лично я предпочитаю быть явным и писать 'NUMERIC '1'', но просто' '1'' тоже в порядке, тип выводится из оператора и другого аргумента. Это произойдет, если вы используете параметр привязки в конце концов, если вы явно не укажете его тип в сообщении протокола. –