2010-12-31 29 views
5

Sıralamak istediğim bir SQLite tablom var. SİPARİŞ BY komutuna aşinayım, ancak bu, yapmaya çalıştığım şey değil. Veritabanındaki tüm tabloya ihtiyacım var.Tüm SQLite tablosunu sırala

Açıklama:

My masa masa düzenini ayarlar "rowid" adlı bir sütun kullanır (bir anahtar?). Tabloyu "isim" adı verilen başka bir sütuna göre sıralamalı ve sonra 'isim' e göre alfabetik sıraya göre sıralı sayıları yeniden atamam gerekiyor. Bu yapılabilir mi?

Herhangi bir yardım çok takdir edilecektir!

Çok teşekkürler!

+0

Bu bir sütun 'rowid' adına iyi bir fikir değil. Bu zaten SQLite'de özel bir anlamı var. – dan04

cevap

2

Bu sorunun birincil anahtarın bir anlama gelmesini istemesi ile ilgili olduğunu düşünüyorum. Bu tuzağı kaçının. Bir veri dizisini benzersiz olarak tanımlayan ve başka bir anlamı olmayan, keyfi olarak oluşturulmuş bir birincil anahtar seçin. Aksi halde, anlamı korumak için birincil anahtar değerlerini değiştirmek istemiş olursunuz. aksi takdirde birincil anahtar tarafından belirlenen bir sırayla görünür yerine veri varsayarak istenilen sırayla verileri almak için ORDER BY güvenmek neden iyi bir açıklama için

bkz similar question

5

için cruachan cevabı

: bir başka sıralanmış tablo şöyle oluşturabilir

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

: Eğer şöyle orijinal tablo oluşturdu varsayarsak

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

Ve sonra orignal tabloyu değiştirmek isterseniz:

DROP TABLE my_table ;

ALTER TABLE my_ordered_table RENAME TO my_table;