簡體   English   中英

SQL-嘗試在現有表中插入新列,其中值從50開始自動遞增1

[英]SQL - Trying to insert a new column in an existing table where the values are auto incremented by 1 starting from 50

 ALTER TABLE advance_d ADD testcolumn INTEGER NOT NULL AUTO_INCREMENT;

這是我輸入的sql代碼。 我有一個名為advace_d的表。 它具有一個名為“ ad_id”的主鍵列。 當我編寫此代碼ALTER TABLE advance_d ADD testcolumn INTEGER; 使用空值創建了一個新列。 我想知道如何創建從給定值開始自動增加1的值的列。

因此我的表將有1個ID的主鍵列和另一個值從50開始加1的列。

我知道如何執行此操作的唯一方法是通過插入具有自動增量列的表中。 我不知道如何使用現有表執行此操作,但是您可以創建一個新表,然后將上一個表復制到該表上,並在此過程中填充自動增量列:

CREATE TABLE newTable (col1, col2, ..., colAuto INT NOT NULL AUTO_INCREMENT);
INSERT INTO newTable (col1, col2, ..., colAuto)
SELECT col1, col2, ..., NULL   -- NULL for colAuto
FROM yourTable
ORDER BY ad_id;

這將導致具有相同數據的新表,以及以原始表中ad_id列的順序從1開始的colAuto列。 此后,如果您不希望colAuto成為自動增量,則可以更改colAuto 如果原始表不再具有任何用途,您也可以刪除它。

編輯:

我們也可以使用行號會話變量來做到這一點:

SET @rn := 0;
UPDATE yourTable
SET colAuto = (SELECT @rn := @rn + 1 )
ORDER BY ad_id;

但是實際上,對非自動增量列進行這種更新可能沒有多大商業意義。 這是因為一旦將更多數據添加到表中,就必須再次手動更新,但是這次序列將從零以外的某個數字開始。 實際上,自動遞增列是輕松維護SQL中的序列的一種方法。

暫無
暫無

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

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