일반적으로 GROUP BY 절은 반드시 그룹 함수(COUNT, MIN, SUM 등…)와 함께 쓰여야 한다. 다른 데이터베이스는 SELECT * FROM {table} GROUP BY {column}
같은 쿼리를 허용하지 않는다. SQLite는 이를 허용하고 있지만 이러한 쿼리의 결과는 예측할 수 없다. 이와 별개로 SQLite 버전에 따른 동작 변경 사항이 있어서 기록해둔다.
TABLE dog
rowid |
address |
name |
1 |
seoul |
coco |
2 |
seoul |
ari |
3 |
busan |
kiara |
4 |
seoul |
casper |
5 |
incheon |
marie |
6 |
seoul |
fleur |
7 |
busan |
rai |
8 |
jeju |
rai |
9 |
incheon |
bella |
10 |
busan |
lucy |
11 |
seoul |
molly |
12 |
jeju |
daisy |
Android 10 SQLite v3.22.0
SELECT * FROM dog GROUP BY address;
rowid |
address |
name |
10 |
busan |
lucy |
9 |
incheon |
bella |
12 |
jeju |
daisy |
11 |
seoul |
molly |
Android 11 SQLite v3.28.0
SELECT * FROM dog GROUP BY address;
rowid |
address |
name |
3 |
busan |
kiara |
5 |
incheon |
marie |
8 |
jeju |
rai |
1 |
seoul |
coco |
쿼리 결과
v3.22.0은 rowid 컬럼이 최대값인 데이터를, v3.28.0은 rowid 컬럼이 최소값인 데이터를 가져오는 차이가 있다.