我在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 |
答案 0 :(得分:3)
您应该使用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 |
+----+------+
答案 1 :(得分:0)
您正在插入意味着添加一行,但您想要更新,因此请使用UPDATE
代替INSERT
UPDATE user SET name = 'abc' WHERE id = 1;