2011-05-25 46 views
0

如何指定將行插入SQL數據庫的順序?如何指定SQL中行的插入順序?

例如我想按降序順序插入我的記錄。

cmd.CommandText = "select parkname,packname,duration,bookday from book where userid='" 
    + Label15.Text + "' ORDER BY bookday DESC "; 
rst = cmd.ExecuteReader(); 
rst.Read(); 
+2

插入語句不能有一個order by子句。抱歉。這就是爲什麼你試圖做到這一點時會出錯。剩下的就像RedFilter說的那樣。 – 2011-05-25 19:01:58

+0

我知道黑暗。但是我的數據檢索語法按降序排列不起作用 – gyan 2011-05-25 19:13:48

+0

SQL(Server?)表沒有**沒有任何特定的順序 - 只有在運行「SELECT」時專門詢問它時纔會得到一個順序。因此,您**不能**按特定順序插入數據,或者 - 您只需插入數據期間。如果你想按照你的日期順序(降序),你需要在'SELECT'中通過指定'ORDER BY(datefield)DESC' – 2011-05-25 20:39:49

回答

13

不要擔心您插入記錄的順序。

原因是,當使用SQL選擇數據時,除非使用ORDER BY子句,否則返回記錄的順序不確定。如果出於性能原因想要維護表格順序,請在要訂購的列上使用聚簇索引。

如果你只是想選擇按日期降序排列數據,這樣做如下:

select MyColumn1, MyColumn2, MyDateColumn 
from MyTable 
order by MyDateColumn desc 
+0

感謝您的幫助過濾器。實際上,ii想按照日期從大到小的順序從數據庫中檢索記錄。 – gyan 2011-05-25 18:42:38

+0

@gyan看到我上面的例子 – RedFilter 2011-05-25 18:46:05

+0

是我使用相同的語法來顯示其他列值根據日期列值。但它不顯示正確的數據。所以我能做些什麼。 – gyan 2011-05-25 18:49:17

1

一個標準化的關係數據庫的特點之一是,你不必擔心訂購。每一行都是獨立的。如果您切換2行,則數據仍然相同並具有相同的含義。

你需要的是一個日期時間戳。將字段添加到存儲日期時間的表中,然後將該字段的默認值設置爲GETDATE()。然後,無論何時執行插入操作,該行都將被標記日期時間。然後,您可以在查詢中使用Order by按順序顯示數據。

+0

你能告訴我如何按日期降序插入數據嗎 – gyan 2011-05-25 19:01:33

+0

是的:不!在使用關係數據庫時,它不是什麼可嘗試的東西! – MAW74656 2011-05-26 15:50:16