일반적으로 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 컬럼이 최소값인 데이터를 가져오는 차이가 있다.