INSERT INTO `news`(item1,item2,item3) SELECT item1,item2,item3 FROM `news`

解决方案 »

  1.   

    如果想在唯一索引重复的时候进行覆盖的话可以用
    replace into `news` select ...
      

  2.   

    INSERT INTO `news`(id,item1,item2,item3) SELECT null,item1,item2,item3
      

  3.   


    INSERT INTO `news`(item1,item2,item3) SELECT item1,item2,item3 FROM `news`
      

  4.   

    能这样写吗?至少mysql是不允许的INSERT INTO ... SELECT语句满足下列条件: 
    查询不能包含一个ORDER BY子句。 
    INSERT语句的目的表不能出现在SELECT查询部分的FROM子句,因为这在ANSI SQL中被禁止让从你正在插入的表中SELECT。(问题是SELECT将可能发现在同一个运行期间内先前被插入的记录。当使用子选择子句时,情况能很容易混淆) 
    AUTO_INCREMENT列象往常一样工作。 
      

  5.   

    >>能这样写吗?至少mysql是不允许的
    奇怪的,我试了,可以的。
      

  6.   

    不行,只能一一对应字段更新。Insert into 表(字段1,字段2,字段3...) Select 字段1,字段2,字段3... From 表 UNION ALL Select 字段1,字段2,字段3... From 表 ......如果不是 自动增长 的标识,主键是可以插入的,前提是满足主键约束。
      

  7.   

    xuzuning(唠叨)的意思应该是INSERT和SELECT不能同一个表吧。
    >>INSERT语句的目的表不能出现在SELECT查询部分的FROM子句,因为这在ANSI SQL中被禁止让从你正在插入的表中SELECT。
    这句话怎么理解?
    含有唯一索引字段确实是不能SELECT *,我试过的。
      

  8.   

    但是,INSERT和SELECT为同一个表,我试过,可以的。
      

  9.   

    myIasm的表在操作时是表锁定的应该不能。innodb的不知道能不能。