끝에 rownum >=15
이있는 쿼리가 있습니다.
이 쿼리를 실행하면 결과가 올바르게 표시됩니다. 이는 모든 15 개의 행을 하나씩 표시하고 표시된 행의 순서가 변경되지 않았 음을 의미합니다. 순서대로 표시된 결과의 예 : 1,2,3,
그러나 쿼리에서 rownum >=15
을 제거하면 결과가 1,2,3 순서로 표시되지 않고 대신 resuls가 1,3,2 순서로 표시됩니다.
여러분의 의견을 통해이 문제를 해결하는 데 도움이 될 것입니다.Rownum 원인 결과가 undorder 방식으로 결과를 표시합니다.
답변
많은 사람들로부터 오랫동안 지속 되어온 질문입니다.
이러한 동작의 원인은 다음과 같이 분석 할 수 있습니다.
데이터베이스가 시리얼 모드이어야합니다.
Oracle 설명서는 말한다 : 두 가지 방법 중 하나를 테이블에
다음 레코드오라클 데이터베이스 데이터를 삽입 :
시리얼 모드 : 기존의 INSERT 작업하는 동안, 데이터베이스의 여유 공간을 재사용 새로 삽입 된 데이터를 기존 데이터와 인터리빙합니다.
병렬 모드 : 직접 경로 INSERT 작업 중에 데이터베이스는 삽입 된 데이터를 테이블의 기존 데이터 뒤에 추가합니다. 기존 데이터의 여유 공간은 재사용되지 않으며 참조 무결성 제약 조건은 무시됩니다. 이러한 절차를 결합하면 성능을 향상시킬 수 있습니다. 통상 모드
insert into users
values(1, 'Elvis'), (2, 'Jackson'), (3, 'Madonna');
수도 기억 순서는 다음 결과.
기본 선택 따라서 결과가 동일합니다.
2 Jackson
1 Elvis
3 Madonna
직접 경로 INSERT에서 데이터는 대신 현재 테이블에 할당 된 기존의 공간을 사용하지 않고, 테이블의 끝에 추가된다.
직접 경로 INSERT을 강제로 사용하려면 /*+ APPEND */ 힌트를 사용하십시오.
insert /*+ APPEND */ into users
values(1, 'Elvis'), (2, 'Jackson'), (3, 'Madonna');
이 는 테이블의 끝에 행을 추가합니다.
기본 선택은 삽입 순서대로 의 레코드를 가져옵니다..
1 Elvis
2 Jackson
3 Madonna
는하지만이 직접 경로 모드 말인가하기 전에 추가 된 레코드는 어떻게됩니까? 삽입되는 동안 동일한 위치에 존재합니다. 이러한 문제를 해결하기 위해 우리는 옵션에 순서를 다음 중 하나를 사용해야합니다 :
- 는 ROWID - 삽입 된 행의 주소 ID를. (제 관찰은 각 테이블마다 항상 순차적입니다.)
order by rowid
을 사용하십시오. 말하자면,order by user_id
- INDEX hint - - 적절한 필드에 인덱스를 정의하고 인덱스에 대해 정의 된 순서대로 기록을 가져 오기 위해이 힌트를 사용
- 는 필드를 인덱스. 데이터에
, 거기에있는 옵션 없지만 적절한 순서 솔루션을 선택하고 검색 할 수 있습니다.
행이 삽입되는 순서는 쿼리에서 반환해야하는 순서와는 전혀 무관합니다. 이 답변의 유일한 부분은'order by' 절을 추가해야한다는 것입니다. –
OP가 의심스러운 이유는 주문을 사용하지 않으면 삽입 순서대로 반환되지 않습니다. –
그 아이디어를 어디에서 얻을 수 있을지 확실치 않은 OP는 두 가지 질문에 대해서만 물어 보는 중입니다. –
- 1. 특정 방식으로 aspx 사이트의 JSON 결과를 표시합니다.
- 2. Prolog가 해석기에 결과를 표시합니다.
- 3. apache solr - 결과가 없을 경우 관련 검색 결과를 표시합니다.
- 4. foreach PHP 루프가 마지막 결과가 아닌 모든 결과를 표시합니다.
- 5. 메서드가 잘못된 결과를 표시합니다.
- 6. 여러 조인을 사용하는 Oracle ROWNUM
- 7. WPF Datagrid에서 가장 간단한 방식으로 쿼리 결과를 표시합니다.
- 8. Google지도와 API가 다른 결과를 표시합니다.
- 9. 원인 UIScrollView zoomToRect : 부분 만 표시합니다.
- 10. 결과를 백분율로 표시합니다.
- 11. 하스켈이 여러 결과를 표시합니다
- 12. 쿼리 결과를 표시합니다.
- 13. 빙 API 검색 결과가 다른 설명을 표시합니다.
- 14. 복수의 결과가 일치하는 결과를 반환
- 15. Wikidata 결과가 PageRank와 비슷한 방식으로 정렬 됨
- 16. 사전 결과가 아닌 사전 결과를 정렬 하시겠습니까?
- 17. rownum = -1은 jqGrid에서를 의미합니다.
- 18. ROWNUM IN ORACLE
- 19. SQL의 Rownum INNER JOIN?
- 20. NHibernate : 집계 및 rownum
- 21. 오라클 쿼리와 ROWNUM
- 22. ROWNUM TOP-N을 사용하여
- 23. ROWNUM 해당 Teradta
- 24. Oracle ROWNUM 성능
- 25. 카산드라 : Oracle rownum
- 26. Android : customsearchadapter가 비어있는 결과를 표시합니다.
- 27. React 폼에서 Controller로 값을 전달하고 결과를 표시합니다.
- 28. asp GridView의 쿼리 결과를 기반으로 이미지를 표시합니다.
- 29. 다중 쿼리 결과를 장고 테이블에 표시합니다. 2
- 30. 두 날짜의 차이가 잘못된 결과를 표시합니다.
이 MySQL 또는 Oracle입니까? 이 질문에서 빠져 나가려는 모든 것은 "결과가 정렬되기를 원하면'ORDER BY'를 사용하십시오."그래서 이것이 어디로 향하고 있는지 알 수 있습니다. 그러나 쿼리를 게시하면 누군가가 정확히 지적 할 수 있습니다 - 당신이 필요로하는'ORDER BY' 절. – Avarkx
샘플 데이터와 시도한 쿼리를 게시하면 도움이 될 것입니다. – Sai
쿼리가 너무 커서 내가 게시 할 수 있는지 보겠습니다. – techy360