1

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行ありますが、当選ファイルは3行ありますのでご注意ください。これは、無作為に選択された 1 つの「ターゲット」行があり、金額が null になることを意味します。各スターバックス カードの金額は、別のファイルを使用して読み込まれます。

mysql クエリを使用してこれを行うことは可能ですか?

4

1 に答える 1

1

を使用して (テーブル)にロードwinning.txtします。winningload 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;
于 2014-11-10T16:02:20.333 に答える