MySQL:INSERT INTO混合了静态和动态值

时间:2012-05-09 20:21:14

标签: mysql insert

我试图将数据从一个表“虹吸”到另一个表。我遇到的问题是新表中的一些数据是静态的,其他数据是从现有表中复制的。让我首先展示我试图运行的查询:

INSERT INTO current_cart 
    (cart_ID, 
    cart_PO, 
    cart_user, 
    cart_date, 
    cart_qty, 
    cart_sku, 
    cart_description, 
    cart_price, 
    cart_linetotal) 
VALUES 
    ('$cartID', 
    '$poNumberNew', 
    '$email', 
    '$lineDate',
SELECT 
    orderdetail_qty, 
    orderdetail_sku, 
    orderdetail_description, 
    orderdetail_price, 
    orderdetail_linetotal
FROM orderdetail
WHERE orderdetail_custemail = $email AND orderdetail_po = $poNumber)

显然,所有PHP变量都是事先声明的。基本上我运行的是一个购物车。此查询将获取先前订单中的商品并将其输入新购物车,以便我们的客户可以根据之前的订单开始新订单。

我遇到的问题是当记录的某些数据是静态的(cartID,poNumberNew,email和lineDate)以及其他信息来自不同的表时,如何将记录插入表中?我希望我能做到这一点,而不创建一个循环来重复查询,但是客户复制的顺序中有很多项目......我认为这会严重影响我们的网站。

我在过去的许多其他网络开发问题上看到了无数令人敬畏的答案,我希望stackoverflow社区可以帮助我在这里......

谢谢!

1 个答案:

答案 0 :(得分:2)

在SELECT语句中,您可以拥有一个返回常量的列。例如,

INSERT INTO current_cart 
    (cart_ID, 
    cart_PO, 
    cart_user, 
    cart_date, 
    cart_qty, 
    cart_sku, 
    cart_description, 
    cart_price, 
    cart_linetotal) 

SELECT 
    '$cartID', 
    '$poNumberNew', 
    '$email', 
    '$lineDate',
    orderdetail_qty, 
    orderdetail_sku, 
    orderdetail_description, 
    orderdetail_price, 
    orderdetail_linetotal
FROM orderdetail
WHERE orderdetail_custemail = $email AND orderdetail_po = $poNumber)