【问题标题】:Insert Data From One Table to Another Table and Add New Values将数据从一个表插入到另一个表并添加新值
【发布时间】:2017-02-13 09:34:18
【问题描述】:

我有两张桌子。 临时表:

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;

我想将临时表的所有值插入订单表并手动添加 orderNumber:uniqid(rand())

我用过INSERT INTO orders SELECT * FROM temporary WHERE FK_user = ? 但是它们不起作用,因为临时表中不存在 orderNumber ...

我该怎么办?请

【问题讨论】:

  • 我没有看到问题所在。只需指定选择 INSERT INTO ORDERS(id, FK_user, FK_bin, orderNumer, orderDate) SELECT t.id, t.FK_user, t.FK_bin, UUID() as orderNumber, t.orderDate from temporary t; 上的列
  • 不要使用SELECT *。在 insert into 和 select 语句中提及每个列名...

标签: php mysql sql database sql-insert


【解决方案1】:

希望我能正确理解您的问题。我认为下面的查询会有所帮助。

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 语句中生成订单号。

【讨论】:

  • 谢谢,它的工作,我有一个问题:“as”是将uniqid变量连接到orderNumber列?
  • As 用于为函数的值提供别名。在这种情况下,我们将别名 orderNumber 赋予 uniqid(rand())。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多