好的,我解决了它并提出了以下解决方案 - 受 Eggyal 评论的启发。
我知道这个问题是高度个体化的,但如果你抽象它(因为我会尝试抽象我的答案),它可能对查询的其他或类似问题LOAD DATA INFILE
有所帮助。
1) 将 CSV 值加载到临时表中。
在某些情况下,这足以修改多个值。
在我的问题中,这并不是因为它很重要,在所有东西都进入决赛桌后,有多少产品将处于活动状态。
活动值可以更改,在决赛桌中处于活动状态的产品将被 CSV 设置为非活动状态,因此在将洞 CSV 加载到决赛桌后,您无法确定活动产品的最终总和。所以继续进行第 2 步。(另外,如果您已经在第 1 步中修改了值)
2)将加载的 CSV 值推table_tmp
送到您的table_final
此查询示例中可能会对您有所帮助:
UPDATE
table_final, table_tmp
SET
table_final.value1 = table_tmp.value1,
table_final.value2 = table_tmp.value2
WHERE
table_final.some_key = table_tmp.some_key
3) 现在剪掉那些超出限制的东西,
我用UPDATE
-Query 和LIMIT
-Param 做到了这一点。
4)删除行table_final
最后的想法:
我发现的一个问题是,您不能按照用户 CSV 的顺序排列值。如果我不想一开始就为这些最后在 CSV 中的产品设置“活动”值,我有点迷茫,因为我无法取回这个订单。如果您知道恢复此订单的方法,或者您想出了更好的解决方案,请告诉我们;)