[英]insert by selecting values from two columns into a column from the same table
請通過從兩列中選擇兩個值到同一表的一列中來插入值。以下是我的查詢。
create table table1(
id int(3) zerofill auto_increment primary key,
prefix varchar(10) default "AB",
username varchar(10)
)
engine=innodb;
MySQL插入查詢
insert into table1 (username)
select prefix + (LPAD(Coalesce(MAX(id),0) + 1,3, '0'))
from table1;
上面的插入查詢不起作用,它在用戶名列中提供了null,請提供任何幫助。謝謝。 預期結果如下。
id Prefix username
001 AB AB001
002 AB AB002
003 AB AB003
+
不是MySQL中的字符串連接運算符。 如果您使用的是sql_mode=PIPES_AS_CONCAT
(或等效的 ),則:
insert into table1 (username)
select prefix || (LPAD(Coalesce(MAX(id),0) + 1,3, '0'))
from table1;
否則使用CONCAT
。
問題:
CONCAT()
NULL
因此您需要使用COALESCE()
或IFNULL()
來獲取DEFAULT值以進行串聯 您的查詢應如下所示
INSERT INTO table1 (username)
SELECT CONCAT(COALESCE(prefix, 'AB'), LPAD(COALESCE(MAX(id), 0) + 1, 3, '0'))
FROM table1
結果:
| ID | PREFIX | USERNAME | -------------------------- | 1 | AB | AB001 | | 2 | AB | AB002 |
這是SQLFddle
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.