如果两次匹配IF条件,则选择两次行

时间:2013-10-30 08:58:41

标签: mysql sql

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

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

(并且,代替点,使用 php implode ,它可能是

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

<小时/> 现在,如果它做了我想做的事情,这将是伟大的:
当客户购买相同产品两次(比如说2条围巾)时,IN条件只匹配一次(显然,它是IN语句......)但我想把它匹配两次。也就是说,如果顾客购买了两条围巾,那么我想要purchases中的两个新行。
是否有可能实现它,而不会弄乱代码?

1 个答案:

答案 0 :(得分:1)

  

如果他们买10000袜子怎么办?然后我会做10000次查询......

使用您当前的方法,在这种情况下,您一定需要执行10k查询。或10k联盟,几乎相当于:

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

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