2012-06-27 34 views
27

tôi cố gắng chạy truy vấn liệu sau đây trong android, nó dường như không hoạt độngchọn giá trị khác biệt trong android sqlite

String query ="SELECT DISTINCT category FROM event"; 
Cursor cursor = mDb.rawQuery(query, null); 
if (cursor != null) { 
    cursor.moveToFirst(); 
} 
return cursor; 

vì vậy tôi quyết định sử dụng phương pháp truy vấn() trong Android mà là một cái gì đó giống như

Bất kỳ ai cũng có thể chỉ cho tôi cách chọn danh mục riêng biệt để sử dụng truy vấn() thay vì rawquery, mọi trợ giúp sẽ được đánh giá cao!

+1

Bạn nên tránh sử dụng của 'rawQuery' bất cứ khi nào có thể ... luôn thích được xây dựng trong các phương thức truy vấn 'SQLiteDatabase' trên' rawQuery'. –

Trả lời

42

Bạn có thể sử dụng phương pháp this:

public Cursor query (boolean distinct, String table, 
        String[] columns, String selection, 
        String[] selectionArgs, String groupBy, 
        String having, String orderBy, String limit) 

luận đây đầu tiên xác định xem có sử dụng riêng biệt hay không.

+0

vì vậy làm thế nào để chọn thể loại riêng biệt, đó là để chọn toàn bộ hàng phải không? – smith

+2

Chỉ chuyển 'danh mục' trong' cột [] ', vì bạn chỉ cần cột đó trong kết quả như được hiển thị trong truy vấn hàng của bạn và bạn sẽ nhận được các danh mục riêng biệt. –

56

Nhưng bạn PHẢI nhớ gửi đối số trong số GROUPBY (NOT NULL gửi).

Bạn phải đặt tên cột cho distinct.

Ví dụ:

Cursor cursor = db.query(true, YOUR_TABLE_NAME, new String[] { COLUMN_NAME_1 ,COLUMN_NAME_2, COLUMN_NAME_3 }, null, null, COLUMN_NAME_2, null, null, null); 

đúng - biệt TRUE

COLUMN_NAME_2 - tên cột những gì bạn có thể DISTINCT.

Điều đó có hiệu quả đối với tôi.

+6

EPIC WIN! Bạn thưa bạn, LÀ TUYỆT VỜI! Tôi đã tìm kiếm giờ cho vấn đề này, cảm ơn rất nhiều cho đầu vào của bạn. Bạn đã làm ngày của tôi vui lên. –

+0

Cảm ơn một tấn! đây là những gì tôi đang tìm kiếm. đặc biệt để đối phó với contentprovider cùng với trình tải con trỏ. Tôi đã làm một hack nhỏ và điều này đã làm việc! –

+0

Có, phải nói cảm ơn bạn quá. Đã tìm kiếm và thử nhiều đề xuất, chỉ có bạn mới làm việc cho tôi. Cảm ơn bạn đã chia sẻ. Giữ nó lên. – statosdotcom

6

Có nhiều cách, như đã được đánh dấu màu xanh lá cây. Nhưng nếu ai đó đang tìm cách để có được nó thông qua truy vấn liệu sau đó ở đây bạn đi:

String query = "SELECT DISTINCT(category) FROM event"; 
3
Cursor res=db.rawQuery("select column1 column2... Distinct column3 from "+Table_name, null); 

column3 là một cột riêng biệt

Các vấn đề liên quan