每當我手動插入數據到我的sql數據庫中時,它不會自動評估自己。這是一個小小的不便,但它仍然存在。SQL數據庫在更新時不會自動排序?
另外,未來的問題將會快速接近。它按數字排序,但僅以第一位數字排序。在每個條目的開頭都有一個數字,這是我想要分類的。我很快接近百位數字標記,它將根據第一位數字在二十多歲時排序爲十位。
每當我手動插入數據到我的sql數據庫中時,它不會自動評估自己。這是一個小小的不便,但它仍然存在。SQL數據庫在更新時不會自動排序?
另外,未來的問題將會快速接近。它按數字排序,但僅以第一位數字排序。在每個條目的開頭都有一個數字,這是我想要分類的。我很快接近百位數字標記,它將根據第一位數字在二十多歲時排序爲十位。
在SQL數據庫中沒有「自動排序」這樣的事情。您必須在每個查詢中指定您想要的ORDER BY
。
表中的數據固有地未排序。某些數據庫將根據聚簇索引對磁盤上的行進行排序,但在您編寫的查詢中依賴此操作會導致查詢鬆散且脆弱。
SQL數據庫未排序 - 記錄本質上是到達順序。爲了按照排序順序檢索記錄,您必須指定一個排序它們的關鍵字。
你說它沒有排序(就像別人說的那樣,沒有本地排序行爲),但是接下來你要說明它是如何排序的,所以這部分問題有點令人困惑。
您描述的排序行爲是正確的。在文本類型字段中有數字,因此它們按照詞彙而非數字排序。如果您需要數字排序,則需要將該信息放在具有數字數據類型的字段中,並在ORDER BY
子句中使用該字段。
沒有自動排序的東西。你必須自己排序。您對數字的排序問題,這裏是我的解決方案:
SELECT tbl AS(
select CAST(SUBSTRING(<field>',1,instr(<field>',' ') as INT),<field>
//I would then use a UNION ALL statement, something like this
SELECT CAST(SUBSTRING(<field>',1,instr(<field>',' ') as INT) as 'SortingField',<field>,A.*
FROM <table> A
WHERE <field> LIKE <regular expression to get fields beginning with numbers>
UNION ALL
SELECT 999999 as 'SortingField',<field>,A.*
FROM <table> A
WHERE <field> NOT LIKE <regular expression to get fields beginning with numbers>)
ORDER BY tbl.SortingField
我沒有在MySQL的這檯筆記本電腦,但我希望這會有所幫助。這對我有很大的幫助。
你可以,如果你使用phpMyAdmin,和你想要的東西在您每次查看錶時間排序使用
**ORDER BY** yourcolumn DESC // Descending
或
*ORDER BY** yourcolumn ASC // Ascending
,只是這樣做:
現在,每當你回到那個表的時候,這將是按您選擇的方式排序。
歡迎來到StackOverflow。在問題中沒有提到網頁或phpAdmin。這完全是一個數據庫問題,因此您的文章不回答問題。您可能希望在開始獲得降薪之前將其刪除。 (我知道現在並不重要,但可能會在您獲得某些聲譽並且將來有人看到這個錯誤答案時)。 –
他所做的一點是運行類似於以下查詢:ALTER TABLE unsorted_data ORDER BY columnA,columnB;' –
一個數據庫不關心順序 - 這純粹是語義的,因爲你可能想要提升而別人想要降序等。這聽起來像你的表設計很差,結合你需要成爲單獨的列。 –
請勿使用字符串來存儲數字數據。或者,當您必須使用字符串存儲數字時,請使用前導零(或空格)以防止誤解(並且前導零可爲您的數據帶來令人愉快的1960年代感覺)。 –