zoukankan      html  css  js  c++  java
  • MySQL带主键表复制行

    要在MySQL表中复制一行,网上一搜有很多结果,大概类似这样:

    insert into 表1 select * from 表1 where id =1;

    或者是这样

    insert into 表1(字段2,字段3) select 字段2,字段3 from 表1 where id=1;

    对于没有设置主键的表,像上面两种方式进行行复制插入是可行的,但是如果表设置了主键的话,上面两种复制语句都是不可行的。第一种是因为主键不能重复,第二种是因为主键不能为空的。

    对于第一种会出现这种错误:ERROR 1062 (23000): Duplicate entry 'xxx' for key 'PRIMARY'

    对于第二种会出现这种错误:ERROR 1364 (HY000): Field 'yyy' doesn't have a default value

    在有主键的表中如何完全复制一行呢?

    复制的语句还是使用类似上面的子查询插入,但是我们需要修改主键的值以避免主键冲突,语法如下:

    INSERT INTO my_table (`id`, `title`, `author`) SELECT 2 AS `id`, `title`, `author` FROM my_table WHERE `id` = 1;

    说明一下:

    这里 id 字段是主键,然后从同一表中复制一行,但是主键字段id不能为空,也不能重复,因此通过使用 as 用一个指定值来替换覆盖子select查出来的id字段的值,然后把这一行复制插入。

  • 相关阅读:
    SGU 271 Book Pile (双端队列)
    POJ 3110 Jenny's First Exam (贪心)
    HDU 4310 Hero (贪心)
    ZOJ 2132 The Most Frequent Number (贪心)
    POJ 3388 Japanese Puzzle (二分)
    UVaLive 4628 Jack's socks (贪心)
    POJ 2433 Landscaping (贪心)
    CodeForces 946D Timetable (DP)
    Android Studio教程从入门到精通
    Android Tips – 填坑手册
  • 原文地址:https://www.cnblogs.com/pluse/p/13140245.html
Copyright © 2011-2022 走看看