我有两张桌子。 临时表:
CREATE TABLE IF NOT EXISTS `temporary` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`FK_user` int(11) NOT NULL,
`FK_bin` varchar(50) NOT NULL,
`orderDate` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=35 ;
订单表:
CREATE TABLE IF NOT EXISTS `orders` (
`id` int(11) NOT NULL,
`FK_user` int(11) NOT NULL,
`FK_bin` varchar(50) NOT NULL,
`orderNumber` varchar(11) NOT NULL,
`orderDate` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我想将Temporary表的所有值插入Orders表并手动添加orderNumber:uniqid(rand())
。
我使用INSERT INTO orders SELECT * FROM temporary WHERE FK_user = ?
但它们不起作用,因为临时表中不存在orderNumber ...
我该怎么办?请
答案 0 :(得分:4)
希望我能正确理解你的问题。我认为下面的查询会有所帮助。
INSERT INTO orders(id , FK_user , FK_bin , orderNumber , orderDate)
(SELECT id , FK_user , FK_bin , uniqid(rand()) AS orderNumber , orderDate
FROM temporary WHERE FK_user = ?);
使用您的函数在select语句中生成订单号,如上面的查询中所述。