[SQL] MySQL과 PostgreSQL을에 절, PostgreSQL을에 왜 오류에 의해 그룹?
SQLMySQL과 PostgreSQL을에 절, PostgreSQL을에 왜 오류에 의해 그룹?
나는이 테이블이 있다고 가정 : 이름 = the_table 그 구조는 다음과 같다 :
PostgreSQL을 :
create table the_table (col3 SERIAL, col2 varchar, col1 varchar, PRIMARY KEY(col3));
MySQL은 :
create table the_table ( col3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col2 varchar(20), col1 varchar(20) )
그럼 난 테이블을 삽입 :
INSERT INTO the_table (col2,col1) VALUES
('x','a'),
('x','b'),
('y','c'),
('y','d'),
('z','e'),
('z','f');
이제 테이블은 다음과 같다 :
col3 | col2 | col1
------+------+------
1 | x | a
2 | x | b
3 | y | c
4 | y | d
5 | z | e
6 | z | f
나는이 쿼리를 수행 할 때 :
select * from the_table group by col2
다음 mysql을 내가 얻을 :
1 x a
3 y c
5 z e
과 PostgreSQL에서, 나는 오류를 얻고있다 :
ERROR: column "the_table.col3" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: select * from the_table group by col2;
내 질문 :
이 오류는 무엇을 의미합니까? 집계 함수는 무엇입니까?
이 MySQL의에서 작동 할 때, 왜 PostgreSQL의에서 작동하지 않을 수 있습니까?
해결법
-
==============================
1.당신은 집계 함수를 사용해야합니다 :
당신은 집계 함수를 사용해야합니다 :
SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1 FROM the_table GROUP BY col2;
DB <> 바이올린 데모
과:
그래서 명시 적 집계 기능이없는 MySQL 버전과는 undetermininistic 값으로 끝낼 수 있습니다. 난 강력하게 특정 집계 함수를 사용하는 것이 좋습니다.
편집하다:
MySQL의에서 GROUP BY의 취급 :
예:
SELECT o.custid, c.name, MAX(o.payment) FROM orders AS o JOIN customers AS c ON o.custid = c.custid GROUP BY o.custid;
-
==============================
2.또한 MySQL의 대답에 : 그것은 이후 5.7 버전에서 작동하지 않을 것입니다.
또한 MySQL의 대답에 : 그것은 이후 5.7 버전에서 작동하지 않을 것입니다.
MySQL의 문서에 명시된대로 ANY_VALUE () 함수를 사용할 수 있습니다.
출처 : https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_any-value
예:
SELECT MIN(col1), col2, ANY_VALUE(col3) FROM the_table GROUP BY col2
-
==============================
3.그것을 사용하십시오 :
그것을 사용하십시오 :
select DISTINCT ON ( col2 ) col2, col1, col3 from the_table
내 결과 :
"x";"a";1 "y";"c";3 "z";"e";5
from https://stackoverflow.com/questions/33629168/group-by-clause-in-mysql-and-postgresql-why-the-error-in-postgresql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 다른 테이블에 존재하지 않는 한 테이블의 모든 레코드를 선택하려면? (0) | 2020.03.17 |
---|---|
[SQL] SQL Server는 자기가 가입 재귀 (0) | 2020.03.17 |
[SQL] 에 Upserting MS 액세스 (0) | 2020.03.17 |
[SQL] 어떻게 SQL Server 메모리 깨끗 SqlDependency합니까? (0) | 2020.03.17 |
[SQL] 가변 크기 변수 목록과 MySQL의 문 준비 (0) | 2020.03.17 |