mysql 使用insert SET语法可以插入多行吗?

ih99xse1  于 2023-01-29  发布在  Mysql
关注(0)|答案(5)|浏览(204)

我在Using The INSERT INTO ... SET Syntax In MySQL博客中读到,您可以使用以下SET语法插入记录。

    • 示例:**
INSERT INTO mytable SET col1= 'val1', col6= 'val6', col10='val10';
INSERT INTO mytable SET col3= 'val3', col5= 'val5', col10='val10';
INSERT INTO mytable SET col4= 'val4', col5= 'val5', col6='val6';

是否可以仅用一条语句插入多行?

x8goxv8g

x8goxv8g1#

不能,INSERT ... SET语法不能用于插入多行。如果您查看INSERT ... SET语法here,您会看到:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    SET assignment_list
    [ON DUPLICATE KEY UPDATE assignment_list]

旁边:

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...

只能提供1 assignment_list(值列表),因此只能插入一行。
这一点也在关于INSERT ... SETINSERT ... VALUES之间差异的问题的评论中指出。

kuarbcqp

kuarbcqp2#

您可以使用insert into select ...

insert into tbl1 (col1, col2, col3)
   select equivalent_col1, equivalent_col2, equivalent_col3 from tbl2 
     where filterCol = 1;

上面的查询从tbl2读取数据并插入到tbl1

hgtggwj0

hgtggwj03#

另一种方法

CREATE TABLE co
    (coid int, name varchar(30));
INSERT INTO co
    (coid, name)
VALUES
    (1,'Volvo'),
    (2,'BMW'),
    (3,'Microsoft'),
    (4,'Apple')
;

您也可以缩短此值(精确值位置):

INSERT INTO co
VALUES
    (1,'Volvo'),
    (2,'BMW'),
    (3,'Microsoft'),
    (4,'Apple')
;
yrwegjxp

yrwegjxp4#

INSERT INTO ... SET ...语法不能用于同一语句的多次插入。
但是,您可以将SELECT中的INSERT INTOUNION ALL一起使用。
或者是从VALUESINSERT INTO
然后在没有值的列中放置NULL。

    • 示例:**

一个一个一个一个一个一个一个一个一个一个一个一个一个

  • db〈〉小提琴here *
5rgfhyps

5rgfhyps5#

要使用单个INSERT语句向表中添加多行,请使用以下语法:

INSERT INTO MyTable
  ( Column1, Column2, Column3 )
VALUES
  ('John', 123, 'Lloyds Office'), 
  ('Jane', 124, 'Lloyds Office'), 
  ('Billy', 125, 'London Office'),
  ('Miranda', 126, 'Bristol Office');

相关问题