考虑以下示例表:
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')
感谢您的协助。
答案 0 :(得分:1)
问题是,在将数据插入temptable之前,sql不会知道imtemCondition字段的值。值“new”在insert语句中作为固定值提供。
您将需要基于参数值选择价格的存储过程,然后将该价格插入临时表,或者您可以使用php实现相同的逻辑。
步骤: