我有一個以下格式的(MYSQL)表;假設表的名稱是 mytable
:
id | 姓名 | 群組 |
---|---|---|
123 | 名稱1 | 1 |
124 | 名稱2 | 2 |
125 | 名稱3 | 1 |
126 | 名稱4 |
id
是唯一的並且自動遞增。 name
是一個唯一的字串,group
只是一個整數
我現在想將name4
指派給一個尚不存在的新group
,因此本例中name4
的group
不能是1
或2
。
例如,結果可能是:
id | 姓名 | 群組 |
---|---|---|
126 | 名稱4 | 3 |
目前,我按 group
降序排序,只需手動插入最大數字 1,但我想知道是否有更好/更快的方法在列中產生新的唯一值。 group
除了是一個整數之外沒有其他約束。
我正在使用 MySQL Workbench,因此我可以使用 SQL 命令以及特定於 Workbench 的選項(如果有)。
如果有任何不清楚的地方,我很樂意提供說明。
在 MySQL 8.0 中,您可以獲得兩個視窗函數的協助:
MAX
,檢索最大「group」值ROW_NUMBER
,檢索表中存在的每個 NULL 的增量值。然後,您可以對這兩個值求和並更新「群組」欄位為空的表。
請在此處查看示範。
在 MySQL 5.X 中,您可以使用一個變量,用最大的「group」值初始化,然後在
UPDATE
語句中增量更新。 >SET 子句。請在此處查看示範。