使用mysql中的数据文件进行条件加载

时间:2014-11-10 15:33:20

标签: mysql mysql-loadfile

我正在尝试使用mysql加载带有条件的文件

GIFTCARDS (table):
    id| store    | amount   | 
    1 | starbucks|          | 
    2 | target   |          | 
    3 | starbucks|          | 
    4 | target   |          | 
    5 | target   |          | 
    6 | target   |          | 

winning.txt (file)
25
10
15

我需要分配"金额"随机。 请注意,有4行" target"但获胜文件包含3行。这意味着将有一个"目标"随机选择的行,其数量为null。每张星巴克卡的金额将使用单独的文件加载。

是否可以使用mysql查询执行此操作?

1 个答案:

答案 0 :(得分:1)

使用winning.txtwinning加载到load data infile(表格)中。

然后,您可以在MySQL查询中完成剩下的工作。关键是枚举行并执行join

update giftcards gc join
       (select @rn := @rn + 1 as x, id
        from giftcards cross join
             (@rn := 0) vars
        where store = 'target'
       ) gcx
       on gc.id = gcx.id join
       (select @rnw := @rnw + 1) as x, amount
        from winning cross join
             (select @rnw := 0) vars
       ) w
       on gcx.x = w.x
    set gc.amount = w.amount;