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



我正在从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两行新围巾。
是否有可能在不弄乱代码的情况下实现它?

如果他们买10000只袜子怎么办?然后我将进行 10000 次查询...

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

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

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

最新更新