0

我正在从一个php文件运行一个查询,该文件从用户那里获取输入。
每次用户购买产品时,我都想插入一个新行。
我的查询是什么样的:

INSERT INTO purchases (name, price)
SELECT product.name, product.price 
       WHERE product.name 
       IN (.........)  

(并且,代替点,使用php 内爆,它可以是

('scarf', 'jeans', 'T-shirt', 'scarf')


现在,如果它符合我的要求,那就太好了:
当客户购买同一产品两次(例如,2 条围巾)时,IN条件只匹配一次(显然,这是一个IN声明......)但我想匹配它两次。也就是说,如果客户买了两条围巾,那么我想要在purchases.
是否有可能实现它,而不会过多地弄乱代码?

4

1 回答 1

1

如果他们买了 10000 只袜子怎么办?然后我会做 10000 次查询……</p>

使用您当前的方法,在这种情况下,您必然需要进行 10k 次查询。或者 10k 联合,这几乎是等价的:

insert into ...
select ... where product_name = ...
union all
select ... where product_name = ...
union all
...

出于这个原因,根据我的评论,我强烈建议您重新访问您的架构并添加一个显然非常需要的quantity字段。

于 2013-10-30T09:09:07.750 回答