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;