2017-10-10 83 views
0

如果我想設計一個表像一本書,書中有這麼多的章節,即可以爲了其他場像created_time如何設計一個索引字段,插入和重新排序的

id | chapter_name 
1 | aa 
2 | cc 
3 | dd 

我可以訂購這樣的記錄輸出:

AA,CC,DD

在本書的條件有太多章節,如果作者想存在章節之間插入一個章節

有兩個混淆在這種情況下:

  1. 如何設計它,所以我可以插入一條記錄bb輸出,如:

AA,BB,CC,DD

  • 如何設計我牛逼,所以我可以重新排列dd輸出,如:
  • AA,DD,CC

    非常感謝,如果我的想法是錯誤的開始,請大家指出

    +0

    你能告訴我們你想要的輸出嗎?順便說一下,通常MySQL表中沒有訂單。當您使用'ORDER BY'查詢時,唯一存在的順序發生。 –

    +0

    如果你不調整'order_id'它怎麼可以在'aa'和'cc'之間?你想要改變這張桌子的「id」嗎?如果這些不需要,你可以使用'order''命令' –

    +0

    @TimBiegeleisen謝謝,我已經添加了慾望輸出,是的!我想要通過其他字段來訂購這些數據,比如'order_id'或者其他東西 – Kcat

    回答

    0

    你」 d必須將您的order_id更改爲浮點值,因此您可以插入/更新它爲1.5。或者您需要使用更大的數字空間,例如1000,2000,3000,以便您可以將條目放入例如1500.

    如果你想要整數編號,你可以使用你的order-by列來產生動態排序,例如row_number等。

    SELECT chapter_name, row_number() OVER (ORDER BY order_id) FROM my_table; 
    

    或者,你可能會被混淆關於數據庫的表是如何工作的,並期待它保持與沒有ORDER BY子句的排序?因爲他們不這樣工作。除非您提供ORDER BY,否則數據庫可以以任何順序返回行。

    +0

    非常感謝,我以爲和你以前一樣,就像設計一本書,書有這麼多章,章有索引,但是如果作者想插入一章,那就是問題 – Kcat

    +0

    那麼你現在怎麼看?我仍然不明白你的問題,每個人都試圖猜測你的真實含義。 –

    +0

    對不起,我想我的描述不清楚,只是想知道如何設計該表,以防像書本章那樣,'order_id'或'created_time'是創建時索引記錄的解決方案,但如何調整索引未來的這些記錄? – Kcat

    0

    如果你只是想硬編碼值

    對於第一個查詢

    更新table_name的 集ID = 4和ORDER_ID = 4 其中name = 'DD';

    Update table_name Set id = 3 and order_id = 3 WHERE name ='cc';插入(id,name,order_id)值(2,'bb',2);

    對於第二查詢

    更新表名 集ID = 2和ORDER_ID = 2 WHERE NAME = 'DD';

    (第二個查詢是當他們沒有bb記錄的名字)後,這只是爲了order by order_id