我在mysql数据库中有一个用户表,其列名称为“ id”和“ name”。而且我想将数据分别插入列中。
我正在使用以下命令将数据成功插入第一列。
insert into user(id) values (1),(2),(3);
select * from user;
+------+------+
| id | name |
+------+------+
| 1 | NULL |
| 2 | NULL |
| 3 | NULL |
+------+------+
在第二列中插入值。
insert into user(name) values ('abc'),('def'),('xyz');
我得到结果。
select * from user;
+------+--------+
| id | name |
+------+--------+
| 1 | NULL |
| 2 | NULL |
| 3 | NULL |
| NULL | abc |
| NULL | def |
| NULL | xyz |
+------+--------+
我想要一个解决方案,使我能够从0索引在名称列中插入值。结果应如下所示,但列中应单独插入。
+------+--------+
| id | name |
+------+--------+
| 1 | abc |
| 2 | def |
| 3 | xyz |
最佳答案
您应该使用insert
语句插入新行,并使用update
语句更新现有行:
update user set name = 'abc' where id = 1;
还是你的情况
update mytable
set name = case id
when 1 then 'abc'
when 2 then 'def'
when 3 then 'xyz'
end
where id in (1,2,3)
或者,如果您的
id
是主键,则可以使用insert ... on duplicate key update
语句: insert into user (id, name)
values (1, 'abc'), (2, 'def'), (3, 'xyz')
on duplicate key
update name = values(name);
样品:
mysql> create table user (id int(11) primary key, name varchar(10) null);
Query OK, 0 rows affected (0.27 sec)
mysql> insert into user (id) values (1),(2),(3);
Query OK, 3 rows affected (0.05 sec)
mysql> insert into user (id, name)
-> values (1, 'abc'), (2, 'def'), (3, 'xyz')
-> on duplicate key
-> update name = values(name);
Query OK, 3 rows affected (0.09 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from user;
+----+------+
| id | name |
+----+------+
| 1 | abc |
| 2 | def |
| 3 | xyz |
+----+------+
关于mysql - 分别在列中插入数据-MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19925889/