簡體   English   中英

MySQL-表中的第二個序列(例如按類別)

[英]MySQL - second sequence in table (e.g. by category)

我正在嘗試尋找最有效的方法來完成某件事,並希望您提出建議!

我有一個包含以下列的表格:

id
category
category_sequence
other_columns

id是一個自動增量列和主鍵。 類別由用戶在UI上選擇。

我想做的是生成一個category_sequence,這是該類別現有的最高category_sequence + 1。

例如,插入幾行將是這樣的:

  • 1 1 1
  • 2 1 2
  • 3 2 1
  • 4 1 3

等等。

顯然,我可以運行查詢以提取最高的category_sequence,向其中添加一個,然后運行我的insert語句。 但是有沒有一種更有效的方法(某些插入將處於相當大的循環中,因此可以加快它並防止交叉的任何事情都很好)。

預先感謝,Kev

你可以試試

    insert into mytable
    select "categoryselected",coalesce(max(category_sequence),0)+1 from mytable where category = "categoryselected"

如果它是該類別的第一條記錄,則可能還必須將其包裝在case語句中。 我沒有mysql可以測試

假設您有一個類別引用到的“類別”表,則可以在該表上創建一個next_sequence字段。 然后,在您的表上插入一個觸發器,該觸發器將獲取下一個序列號,將其放入category_sequence列中,並遞增next_sequence字段(必須全部在單個事務中完成)。

您可以通過將auto_increment字段更改為category_sequence,然后將主鍵設為category + category_sequence來使數據庫完成此操作。 然后,您可以刪除id字段,因為它不會執行您想要的操作。 然后,MySql將按照您的描述完全增加category_sequence字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM