테이블이 food
이고 두 열이 fruit
및 species
인 두 개의 테이블이 있습니다. 각 종은 fruit
의 값이 다른 여러 행을 가질 수 있습니다. 정확히 1 fruit
을 먹는 모든 종을 찾고 해당 종에 대해 fruit
의 값을 알고 싶습니다. HAVING 쿼리의 여러 용어
select species
from food
group by species
having count(species) = '1'
가 지금은 2 열, 하나
species
및 관련
fruit
다른 싶습니다
이 쿼리
은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
^
감사합니다! (
select species, max(fruit)
from food
group by species
having count(fruit) = 1
우리가 각 종에 대한 "최대"과일을 선택이 방법을 :
문자열과 숫자를 비교하지 마십시오. '1'은 숫자입니다. '1'은 숫자가 아닌 문자열 값입니다. –
'과일이 = 1'입니까? – melpomene
@a_horse_with_no_name SQL 또는 적어도 PostgreSQL TBH에서 꽤 괜찮습니다. ''1 '은 알 수없는 형식의 리터럴입니다. 예를 들어'NUMERIC' 리터럴을 지정하는 것은 실제로 _correct_ 방법입니다. 개인적으로 나는 명시 적으로'NUMERIC '1'을 쓰는 것을 선호하지만,''1 ''만이 OK이다. 타입은 연산자와 다른 인수로부터 유추된다. 프로토콜 매개 변수에 명시 적으로 유형을 지정하지 않는 한, 결국 bind 매개 변수를 사용하면 이러한 일이 발생합니다. –