2010-12-31 38 views
5

Tôi có một bảng SQLite mà tôi cần sắp xếp. Tôi quen thuộc với lệnh ORDER BY nhưng đây không phải là những gì tôi đang cố gắng hoàn thành. Tôi cần toàn bộ bảng được sắp xếp bên trong cơ sở dữ liệu.Sắp xếp toàn bộ bảng SQLite

Giải thích:

bảng của tôi sử dụng một cột gọi là "rowid" mà đặt theo thứ tự của bảng (một chìa khóa?). Tôi cần sắp xếp bảng theo một cột khác gọi là "name" và sau đó gán lại các số rowid theo thứ tự bảng chữ cái theo 'tên'. Điều này có thể được thực hiện?

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

Cảm ơn bạn rất nhiều!

+0

Nó không phải là một ý tưởng tốt để đặt tên cho một cột 'rowid'. Điều đó đã có một ý nghĩa đặc biệt trong SQLite. – dan04

Trả lời

2

Tôi nghĩ vấn đề này liên quan đến việc muốn khóa chính có ý nghĩa gì đó. Tránh cái bẫy đó. Chọn khóa chính được tạo ngẫu nhiên để xác định duy nhất một hàng dữ liệu và không có ý nghĩa nào khác. Nếu không, cuối cùng bạn sẽ gặp phải vấn đề muốn thay đổi các giá trị khóa chính để bảo toàn ý nghĩa.

Đối với một lời giải thích tốt về lý do tại sao bạn nên dựa vào ORDER BY để lấy dữ liệu theo thứ tự mong muốn thay vì giả định các dữ liệu khác sẽ xuất hiện trong một chuỗi xác định bằng khóa chính xem câu trả lời Cruachan để một similar question

5

Giả sử bạn đã tạo bảng ban đầu của bạn như sau:

CREATE TABLE my_table (rowid INTEGER PRIMARY KEY, name TEXT, somedata TEXT) ;

bạn có thể tạo một bảng được sắp xếp như sau:

CREATE TABLE my_ordered_table (rowid INTEGER PRIMARY KEY, name TEXT, somedata TEXT) ;

INSERT INTO my_ordered_table (name, somedata) SELECT name,somedata FROM my_table ORDER BY name ;

Và nếu sau đó bạn muốn thay thế các bảng orignal:

DROP TABLE my_table ;

ALTER TABLE my_ordered_table RENAME TO my_table;

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