我正在嘗試通過 mysql 中的子查詢為自動增量值提供值
我試過這個命令
alter table xxx auto_increment = (select max(id) from xxx) ;
但是我收到語法錯誤
您的 SQL 語法有錯誤;檢查與您的 MariaDB 服務器版本相對應的手冊,以獲取在第 1 行的“(從 xxx 中選擇 max(id))”附近使用的正確語法
請任何人幫助我解決這個問題....在此先感謝
uj5u.com熱心網友回復:
為此,您需要使用動態 sql:
select concat("alter table foo auto_increment=",max(id)) from foo into @maxid;
prepare setautoinc from @maxid;
execute setautoinc;
deallocate prepare setautoinc;
小提琴
uj5u.com熱心網友回復:
您不能通過這種方式設定 AUTO_INCREMENT - 新的 AUTO_INCREMENT 值是文字,不能是運算式。
為了實作您的目標,將 AUTO_INCREMENT 設定為 1 就足夠了。對于此陳述句,始終檢查提供的值,如果存在某些行并且它必須高于提供的值,則它會MAX(AI_column) 1自動調整為。
演示:
CREATE TABLE test ( id INT AUTO_INCREMENT PRIMARY KEY );
INSERT INTO test VALUES (DEFAULT), (DEFAULT);
SELECT * FROM test; -- rows id=1,2 inserted
SHOW CREATE TABLE test; -- AUTO_INCREMENT = 3
| ID |
|---|
| 1 |
| 2 |
| 桌子 | 創建表 |
|---|---|
| 測驗 | CREATE TABLE `test` ( ??`id` int NOT NULL AUTO_INCREMENT, ??PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
ALTER TABLE test AUTO_INCREMENT = 10; -- set value above current
SHOW CREATE TABLE test; -- AUTO_INCREMENT = 10 -- specified value applied
| 桌子 | 創建表 |
|---|---|
| 測驗 | CREATE TABLE `test` ( ??`id` int NOT NULL AUTO_INCREMENT, ??PRIMARY KEY (`id` ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
ALTER TABLE test AUTO_INCREMENT = 1; -- set value below current
SHOW CREATE TABLE test; -- AUTO_INCREMENT = 3 -- value adjusted to MAX(id) 1
| 桌子 | 創建表 |
|---|---|
| 測驗 | CREATE TABLE `test` ( ??`id` int NOT NULL AUTO_INCREMENT, ??PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/520388.html
上一篇:Helm圖表覆寫值
