Mysql在具有不同唯一ID的表之间传输数据?

时间:2014-05-31 10:45:28

标签: php mysql

我有下表 -

CREATE TABLE ccfarch 
( id tinyint(7) AUTO_INCREMENT,
 jobno varchar(15),
 partno varchar(40),
 descr varchar(250),
 serno varchar(200),
 batno varchar(200),
 acreg varchar(30),
 suppname varchar(100),
 orderqty int,
 delqty int,
 stockqty int,
 reorderqty int,
 orddate date,
 deldate date,
 bcost decimal(5,2),
 scost decimal(5,2),
 totcost decimal(5,2),
 expdate date,
 location varchar(30),
 notes text,
 svarchar1 varchar(200),
 svrchar2 varchar(200),
 sint1 int,
 sint2 int,
 sdate date,
 senum1 enum('y','n') DEFAULT 'n',
 senum2 enum('y','n') DEFAULT 'n',

 PRIMARY KEY (id),
 UNIQUE id (id));

我希望将记录传输到类似的表中,但是使用新的唯一ID(ida),以便先前的唯一(id)不再是第二个表中的唯一ID - 我在第二个表中添加了一个新的唯一ID( IDA)

我使用以下查询来移动记录,但它不起作用,我不明白为什么?

 mysql_query("INSERT INTO ccfarch2 SELECT * FROM ccfarch WHERE jobno = '$jobno'")

CREATE TABLE ccfarch2 
( ida tinyint(7) AUTO_INCREMENT,
 id tinyint(7),
 jobno varchar(15),
 partno varchar(40),
 descr varchar(250),
 serno varchar(200),
 batno varchar(200),
 acreg varchar(30),
 suppname varchar(100),
 orderqty int,
 delqty int,
 stockqty int,
 reorderqty int,
 orddate date,
 deldate date,
 bcost decimal(5,2),
 scost decimal(5,2),
 totcost decimal(5,2),
 expdate date,
 location varchar(30),
 notes text,
 svarchar1 varchar(200),
 svrchar2 varchar(200),
 sint1 int,
 sint2 int,
 sdate date,
 senum1 enum('y','n') DEFAULT 'n',
 senum2 enum('y','n') DEFAULT 'n',

 PRIMARY KEY (ida),
 UNIQUE id (ida));

2 个答案:

答案 0 :(得分:0)

除非您在SELECT *

中指定字段,否则您无法从包含较少字段的表中INSERT INTO (....) INSERT INTO ccfarch2 SELECT NULL, t.* FROM ccfarch t WHERE ...

所以,为了让你更容易(假设只有第一个字段不同):

{{1}}

答案 1 :(得分:0)

列数中存在未命中匹配,尝试此操作

mysql_query("INSERT INTO ccfarch2(id , jobno, partno, descr, serno, batno, acreg, suppname, orderqty, delqty, stockqty, reorderqty, orddate, deldate, bcost, scost, totcost, expdate, location, notes, svarchar1, svrchar2, sint1 , sint2, sdate, senum1, senum2 )
 SELECT * FROM ccfarch WHERE jobno = '$jobno'")