ORDER BY 없이 LIMIT을 쓸 때는 순서가 달라질 수 있다는 것을 감안하고 써야겠습니다.
- oil_price 테이블과 refueling 테이블을 주유소 상호를 기준으로 right join 하고, 테이블의 이름으로 정렬했을 때, 3번째 데이터의 상호는?
SELECT r.이름, o.상호
FROM oil_price o
RIGHT JOIN refueling r
ON o.상호 = r.주유소
ORDER BY r.이름;
SELECT r.이름, o.상호
FROM oil_price o
RIGHT JOIN refueling r
ON o.상호 = r. 주유소
ORDER BY r.이름
LIMIT 3;
ORDER BY r.이름으로 조회했기 때문에, LIMIT 몇으로 두냐에 따라 상호명의 순서가 달라지는 것으로 보입니다.
규칙성은 따로 찾지 않았는데.
다만 알아두어야 할 것은, 조회할 때마다 순서가 바뀌는게 보기 싫다면,
저때는 ORDER BY r.이름, o.상호 까지 해두어야 한다는 점 정도인 것 같습니다.
아래는 RDBMS 인 Postgress를 쓸 때 LIMIT 에 대한 설명입니다.
When using LIMIT, it is important to use an ORDER BY clause that constrains the result rows into a unique order. Otherwise you will get an unpredictable subset of the query's rows. You might be asking for the tenth through twentieth rows, but tenth through twentieth in what ordering? The ordering is unknown, unless you specified ORDER BY.
https://www.postgresql.kr/docs/10/queries-limit.html
mysql에 똑같이 적용되는지는 모르겠으나 참고할만하다 생각됩니다.
'sql' 카테고리의 다른 글
[mysql] 집계 함수 (기초) (0) | 2022.07.05 |
---|---|
[sql] PRIMARY KEY, FOREGIN KEY (0) | 2022.07.05 |
[mysql] UNION 쓰면 전체 중복이 제거 된다는 점. (0) | 2022.07.03 |
[Mysql] 쿼리가 엉킨 경우에 유용한 코드 (0) | 2022.07.02 |
[sql] 테이블 백업, 스키마 백업 (0) | 2022.06.30 |