我在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/

10-15 01:36
查看更多