null而不是0。我使用的是MySQL 5.5.35(Ubuntu)。@TylerCollier:NULL或0都可以接受。你能在这里复制并分享这个问题的屏幕截图吗?我在试图理解第4行的neato子查询时感到很伤心。也许这个解释有帮助:目标表发票包含一个自动

null而不是0。我使用的是MySQL 5.5.35(Ubuntu)。@TylerCollier:NULL或0都可以接受。你能在这里复制并分享这个问题的屏幕截图吗?我在试图理解第4行的neato子查询时感到很伤心。也许这个解释有帮助:目标表发票包含一个自动,mysql,Mysql,null而不是0。我使用的是MySQL 5.5.35(Ubuntu)。@TylerCollier:NULL或0都可以接受。你能在这里复制并分享这个问题的屏幕截图吗?我在试图理解第4行的neato子查询时感到很伤心。也许这个解释有帮助:目标表发票包含一个自动递增ID字段。源表tmp没有。为了在插入过程中获得所需的1:1相关性,可以指定0作为select的第一个字段,该字段是目标表的自动增量字段。tmp.选择源表tmp中的所有字段。完美的现在有了1:1的相关性。回答@Tim@RavinderRedd


null而不是0。我使用的是MySQL 5.5.35(Ubuntu)。@TylerCollier:
NULL
0
都可以接受。你能在这里复制并分享这个问题的屏幕截图吗?我在试图理解第4行的neato子查询时感到很伤心。也许这个解释有帮助:目标表
发票
包含一个自动递增
ID
字段。源表
tmp
没有。为了在插入过程中获得所需的1:1相关性,可以指定
0
作为select的第一个字段,该字段是目标表的自动增量字段。
tmp.
选择源表
tmp
中的所有字段。完美的现在有了1:1的相关性。回答@Tim@RavinderReddy NULL和0不一样-可能记录id为0-对这种类型的记录使用NULLthing@TobiasBeuving:我很清楚
NULL
0
是不同的。当前上下文处于“自动增量”功能中。不能在此类字段中插入
0
NULL
值。但当您将它们用作此类字段的输入时,下一个序列值将自动分配给该字段。因此我的评论。SQL FIDLE证明:这也是在复制时修改某些字段的良好基础。我刚刚使用了
INSERT-into-wp\u-options选择NULL,'theme\u-mods\u-twopress',option\u-value,从wp\u-options自动加载,其中option\u-name='theme\u-mods\u-onepress'
在增加条目的同时进行复制(
自动增量
上面的技巧)以及
选项_name
字段。是。。对我来说是个好主意。非常感谢。然而,最好的解决方案是,一旦在表中添加或删除字段,您就必须更改代码,我个人认为这是一个主要的禁忌(不总是,但次数足够多)
INSERT INTO invoices
    SELECT * FROM invoices AS iv WHERE iv.ID=XXXXX
    ON DUPLICATE KEY UPDATE ID = (SELECT MAX(ID)+1 FROM invoices)
INSERT INTO invoices SELECT MAX(ID)+1, ... other fields ... FROM invoices AS iv WHERE iv.ID=XXXXX 
CREATE TEMPORARY TABLE tmp SELECT * FROM invoices WHERE id = 99;

UPDATE tmp SET id=100 WHERE id = 99;

INSERT INTO invoices SELECT * FROM tmp WHERE id = 100;
CREATE TEMPORARY TABLE tmp SELECT * from invoices WHERE ...; ALTER TABLE tmp drop ID; # drop autoincrement field # UPDATE tmp SET ...; # just needed to change other unique keys INSERT INTO invoices SELECT 0,tmp.* FROM tmp; DROP TABLE tmp;
insert into Preguntas  (`EncuestaID`, `Tipo` , `Seccion` , `RespuestaID` , `Texto` )  select '23', `Tipo`, `Seccion`, `RespuestaID`, `Texto` from Preguntas where `EncuestaID`= 18
CREATE TABLE IF NOT EXISTS `Preguntas` (
  `ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `EncuestaID` int(11) DEFAULT NULL,
  `Tipo` char(5) COLLATE utf8_unicode_ci DEFAULT NULL,
  `Seccion` int(11) DEFAULT NULL,
  `RespuestaID` bigint(11) DEFAULT NULL,
  `Texto` text COLLATE utf8_unicode_ci ,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=522 ;
INSERT INTO invoices (iv.field_name, iv.field_name,iv.field_name
) SELECT iv.field_name, iv.field_name,iv.field_name FROM invoices AS iv     
WHERE iv.ID=XXXXX
DELETE FROM `tbl` WHERE varname="primary key value for new record";
DROP TABLE tmp;
CREATE TEMPORARY TABLE tmp SELECT * FROM `tbl` WHERE varname="primary key value for old record";
UPDATE tmp SET varname=NULL;
INSERT INTO `tbl` SELECT * FROM tmp;
SET @x=7;
CREATE TEMPORARY TABLE tmp SELECT * FROM invoices;
UPDATE tmp SET id=id+@x;
INSERT INTO invoices SELECT * FROM tmp;
INSERT INTO invoices (col_1, col_2, col_3, ... etc)
  SELECT
    t.col_1,
    t.col_2,
    t.col_3,
    ...
    t.updated_date,
  FROM invoices t;
INSERT INTO invoices (ID, col_1, col_2, col_3, ... etc)
  SELECT
    MAX(ID)+1,
    t.col_1,
    t.col_2,
    t.col_3,
    ... etc ,
  FROM invoices t;
CREATE TEMPORARY TABLE tmptable SELECT * FROM x WHERE (id='123');
ALTER TABLE tmptable CHANGE id id bigint;
UPDATE tmptable SET id = NULL;
INSERT INTO x SELECT * FROM tmptable;