2011-01-25 4 views
21

주문하지 않고도 SQLite 열의 고유 값 목록을 가져올 수 있는지 알고 싶습니다.SQLite DISTINCT 선택 주문하지 않고 열의 값

다음 쿼리를 시도했습니다. 그러나 자동으로 고유 텍스트를 오름차순으로 정렬합니다.

SELECT DISTINCT column FROM table;

Ex.

Mathew 
Mathew 
John 
John 
John 
Numbers 
Numbers 

결과

John 
Mathew 
Numbers 

하지만 그렇지 않은 주문하고 싶습니다. Mathew, John, Numbers에서 원하십니까

고마워요.

+0

어떤 순서로 결과를 원하십니까? 'ORDER BY some_other_column'을 사용하십시오. –

+0

열 텍스트에 순서를 지정하지 않고 나타나기 만하면됩니다. 나는 가까운 값을 중복했다. –

답변

33

어떤 순서로 원하십니까?

당신이 첫 등장의 순서로 값을 얻고 싶다면 당신은 할 수 있습니다 :

select distinct column 
    from table 
order by min(rowid); 
+1

나는 내 테이블에있는 것과 같은 순서를 원합니다. 그러나 위의 쿼리를 이해하지 못합니다. 조금 설명해 주 시겠어요? 나는 가까운 값을 중복했다. –

+0

SQLiteBrowser를 사용하여 INTEGER PRIMARY KEY Column을 추가하고 새 Column MIN()을 ORDERED BY했습니다. :) 감사. –

+0

rowid는 암시 적 INTEGER PRIMARY KEY입니다. http://www.sqlite.org/lang_createtable.html – AtnNn

2

"주문하지 않는다"는 의미는 무엇입니까? SQL 테이블에는 자연스러운 순서가 내포되어 있지 않으므로 왼쪽에서 오른쪽으로 열을 기준으로하는 기본 오름차순은 다른 모든 순서만큼 좋습니다. 다른 순서를 선호하는 경우 SELECT DISTINCT는 ORDER BY 절을 허용합니다.

+0

실제로 SQLite에서이 쿼리를 사용하면 열의 텍스트가 오름차순으로 정렬됩니다. –

+0

네, 저의 요점입니다. 기본 테이블 (데이터가 그려진 양식)에는 "자연"순서가 없으므로 결과 집합을 어떻게 정렬 할 것으로 예상합니까? 존중받을 순서가 없기 때문에 오름차순은 다른 것보다 의미가 있습니다. –

+0

하지만 쿼리를 시도했을 때 SQLite로 정렬 된 것으로 표시됩니다. 결과에 대한 내 질문을 편집했습니다. –

0

헤이 쉬운 하나의 방법은 당신이 레코드를 삽입으로 일련 번호 (이것은 기본 키 확인)를 추가 할 것이며, 명령을 내려라.