2009-07-30 47 views
0

我看到this post,但不明白這是不是同一個問題。在整個下一個查詢中維護SQL排序狀態?

我的數據庫可以按每列進行排序。一旦數據庫被排序後,如何在我的下一個查詢後維護該訂單?

例如:按年齡
訂貨DB:
的sprintf(SQL, 「SELECT * FROM CUSTOMER_TABLE ORDER BY age_ID LIMIT 100 OFFSET%S;」,偏移量);

則用戶看接下來的100級的客戶

的sprintf(SQL, 「SELECT * FROM CUSTOMER_TABLE LIMIT 100 OFFSET%S;」,偏移量); //下一個偏移量

返回的數據不再按年齡排序。我將如何保持整個下一個查詢的最後一個排序?

我是否必須傳入一個變量才能保持狀態,或者數據庫是否有一些函數來調用它的最後狀態?

回答

2

除了將記錄選擇到臨時表中,然後從該表中選擇,您將不得不在每個查詢中指定ORDER BY。服務器不保留任何類型的關於上一個查詢的狀態。爲什麼在後續查詢中重新指定ORDER BY子句是個問題?

無論是使用臨時表還是重新指定整個查詢都是您的應用程序結構的問題。

+0

因此,臨時表將始終充滿維護該訂單的最後一個查詢。下一個查詢將在該臨時表上,並且該表將替換爲該查詢等。創建此表的方法有哪些?這不是一個問題,但從客戶期望的角度來看,再次分類將是「愚蠢的」。額外點擊。用戶需要質量,但必須快速或離開您的網站。 – 2009-07-30 18:35:40

2

您必須在每個請求中指定ORDER BY子句。

數據庫系統優化的方式與您的客戶端代碼無關。

1

SQL數據庫不保證任何排序,您必須在每個選擇的調用中指定它。

+0

是的,我明白了,看看是否有人有創造性地維護最後一種。 – 2009-07-30 18:31:04

2

數據庫引擎生成的結果集一旦被滿足,就會被遺忘。每次查詢數據庫時,都必須提供排序順序。