簡體   English   中英

通過從兩列中選擇值來插入同一表中的一列

[英]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

問題:

  1. 正如Matt所述,您需要在MySql中使用CONCAT()
  2. 對於插入的第一條記錄,SELECT返回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.

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