0

用户可以上传 CSV 并按列定义它们。
所以 CSV 没有静态定义,但更像是每个用户都可以根据需要定义他们的 CSV。用户还购买了一个帐户,该帐户仅限于他们可以“激活”的许多产品。
举例说明:
用户有一个帐户,允许他激活 1000 个产品。
但在他上传的 CSV 文件中,他将 1100 个产品设置为活动状态。我们使用Query
将此 CSV 加载到我们的 MYSQL-DB 中。LOAD DATA INFILE

为了避免用户可以通过 CSV 激活更多产品的这种行为,他的帐户甚至被限制为 - 是否有任何可能的解决方案可以说,例如:

active = IF(@active = 1 AND COUNTER <= 1000, (1 AND COUNTER++), 0 )
4

1 回答 1

0

好的,我解决了它并提出了以下解决方案 - 受 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 中的产品设置“活动”值,我有点迷茫,因为我无法取回这个订单。如果您知道恢复此订单的方法,或者您想出了更好的解决方案,请告诉我们;)

于 2013-07-12T19:47:36.443 回答