2013-09-24 3 views
0

데이터를 사전 순으로 선택하는 쿼리가 있습니다. 예를 들어 :SQLite에서 순서 ID를 사용하여 레코드를 선택하는 방법

ID |TITLE 
6 |A 
35 |AA 
3 |B 
87 |BB 
... 

그리고 내가 좋아하는 것은 (order id는 DB의 실제 열이 아니다)뿐만 아니라 기록의 order id을 선택합니다. 결과는 다음과 같습니다.

ID |ORDER ID |TITLE 
6 |0  |A 
35 |1  |AA 
3 |2  |B 
87 |3  |BB 
... 

어떻게하면됩니까? while 루프에서 반환 된 모든 레코드를 확인할 수 있었고 매 반복마다 카운터를 늘릴 수는 있었지만 실제로 원하는 작업이 아니 었습니다.이 작업을 데이터베이스에 맡기고 싶습니다. 이 같은

답변

0

이것은 다른 데이터베이스 엔진에서 종류가 RANK입니다.

SELECT ID, (SELECT COUNT() FROM table AS t WHERE Title<table.Title), Title FROM table; 

dense_rank and sqlite - possible?

편집 : 고유 주문 번호 : SQLite는에서

,이 같은 달성 할 수있는 내가 어떤 열 호출이없는 내 테이블에서

SELECT ID, (SELECT COUNT() FROM table AS t WHERE Title<table.Title OR Title=table.Title AND ROWID<table.ROWID), Title FROM table; 
+0

안녕하세요, 그것을 시도했지만 제대로 작동하지 않습니다. 내가 귀하의 쿼리를 테스트하고 그것은 절대적으로 잘못된 값을 반환합니다 + 나는 그것을 필요하기 때문에 "ORDER BY title"을 추가하려고했습니다. 그리고 0, 1, 1, 1, 1, 1, 1, 11, 11, 11, 11, 11, 30, 30, 30 등 ... – 0101

+0

반복되는 이름이 있기 때문입니다. 해결할 수 있지만이를 처리하는 방법에 대한 지침을 제공하지 않았습니다. –

+0

정렬은 "ORDER BY ..."에 의해 이루어 지므로 (A, A, A, B, C, D)와 같은 값을 반복하면 (0, 1 , 2, 3, 4, 5, 6). 어떤 값이 있는지는 중요하지 않습니다 ... 정렬되어 있으며 색인이 필요합니다. 그런 다음 예를 들어 234 번 항목 (예 : 세 번째 "A")을 선택하면 주문 ID "2"가 반환됩니다. – 0101

0

뭔가 :

SELECT * FROM yourtable WHERE id = 3 ORDER BY title 

이것은 yourtable (ID, 주문 ID, 제목)에서 모든 필드를 반환합니다 id 컬럼 3

편집 추가 : 추가 주석의 정보 - 결과 세트에는 order_id를 포함 시키되 테이블에는 포함시키지 마십시오. 이것에 당신은 컬럼과 같이 일정 및 별칭을 추가 할 수 있습니다

SELECT id, '999' AS order_id, title FROM yourtable WHERE id = 3 ORDER BY title 

이 값으로 999과 ORDER_ID 컬럼을 반환합니다.

+0

을 (ORDER_ID). 모든 SELECT 쿼리마다 다를 수 있기 때문에 SELECT 쿼리에서 설정하려고합니다. 0에서 XXX 사이 여야합니다. – 0101

+0

내 편집 된 답변을 보아라, 나는 아직도 당신이 묻고있는 것에 대해 100 % 확실하지 않다. 그러나 그것은 나의 해석이다. –

+0

안녕하세요 당신의 예가 order_id '999'를 돌려 주지만, 나는 진짜 order_id를 필요로합니다. 위의 예에서 2 번. 예를 들어 "A"에 대한 값이 하나 더 있다면 문자 "B"는 더 멀어 질 것이므로 숫자 3이있는 order_id를 갖습니다. 기본적으로 알파벳순으로 선택한 쿼리에서 항목을 정렬해야하며 모든 항목은 몇 가지 색인이 있습니다. 첫 번째 항목은 0, 두 번째 항목은 1, 세 번째 항목은 2 등 ... 나는 그것을 어떻게 다른지 설명 할 수 없습니다. 고마워요 – 0101

관련 문제