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

标签 mysql sql

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

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

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

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

<小时/> 现在,如果它能达到我想要的效果那就太好了:
当客户购买同一产品两次(例如,两条围巾)时,IN 条件仅匹配一次(显然,这是一个 IN) > 声明...)但我想匹配它两次。也就是说,如果客户购买了两条围巾,那么我希望在 purchases 中添加两个新行。 <小时/> 是否有可能在不破坏代码的情况下实现它?

最佳答案

What if they buy 10000 socks? Then I will do 10000 queries…

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

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

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

关于mysql - 如果行两次匹配 IF 条件,则选择该行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19677768/

相关文章:

mysql - 在 mySQL 中检查两个表,其中 1 个结果可以为 NULL

sql - oracle 中报告表的数据馈送(汇总与分组集)

SQL Server 2005 混合模式身份验证

mysql group_concat 没有带来整个数据

php - 语法错误或访问冲突 : 1064 ' brandname

mysql - 关于 SQL 行过滤器

MySQL(Workbench?)改变了我的脚本

php - 没有 LIMIT 子句的 codeigniter 事件记录获取查询和查询

java - 隐藏结果集中的行

mysql - 错误 1064 (42000) - INSERT ... SELECT 查询中的 MySQL 错误