用case将数据插入临时mysql表

时间:2016-01-19 12:54:57

标签: php mysql mysqli

考虑以下示例表:

CREATE TABLE items
    (`id` int, `productName` varchar(7), `price_new` decimal(10,2), `price_used` varchar(55))
;

INSERT INTO items
    (`id`, `productName`, `price_new`, `price_used`)
VALUES
    (1, 'cup', 10.50, 5.50),
    (2, 'plate', 9.50, 4.50),
    (3, 'mug', 8.50, 3.50)
;

对于应用程序,我希望根据用户的内容创建一个临时表。 用户会说“杯子”,状态为“新”。 (存储在php数组中)

我想要的临时表格如下:

CREATE TEMPORARY TABLE IF NOT EXISTS tempTable (
         `id` INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
          `name` varchar(7) NULL,
          `itemCondition` varchar(7) NULL,
          `price` decimal(10,2) NULL
        );

我的问题是: 如果我创建这个临时表,我怎么能插入'cup'和'new'与MySQL根据itemCondition从items表中选择价格? 伪码:

Insert: 
(1, 'cup', (
    if itemCondition == 'new' 
    (select Items.price_new where items.productName = 'cup')
    ELSE 
    (select Items.price_used where items.productName = 'cup') 

感谢您的协助。

1 个答案:

答案 0 :(得分:1)

问题是,在将数据插入temptable之前,sql不会知道imtemCondition字段的值。值“new”在insert语句中作为固定值提供。

您将需要基于参数值选择价格的存储过程,然后将该价格插入临时表,或者您可以使用php实现相同的逻辑。

步骤:

  1. 提供用户ID,名称和项目条件。
  2. 根据商品条件选择价格。
  3. 将所有数据插入临时表。