0

一部のデータをCSVファイルにエクスポートする必要があります。これを行うにはSELECT、特定の列を0に設定してこれらの行のコマンドを発行します。その後、それらの行を再度エクスポートしないように、これらの行を1に設定する必要があります。

この状況に直面するための最良のアプローチは何ですか?UPDATE以前に選択したのとまったく同じ行を使用する「トランザクション」を意味します。

SELECT ... FOR UPDATE行く方法はありますか?

4

3 に答える 3

1

これはあなたが探しているものですか?

UPDATE table SET column = 1 WHERE(
SELECT column FROM table WHERE column = 0)
于 2012-12-07T13:08:36.273 に答える
0

それが誰かに役立つ場合、私がしたことは、テーブルに3つの状態フィールドを持つことでした.

レコードが挿入されるたびに、その初期状態は 0 です。

新しい行をエクスポートする場合、トランザクション内で次のことが発生します。

  • 状態 0 (新規) のものは 1 に設定されます (エクスポートされようとしています)。
  • csv エクスポート用に状態 1 (エクスポートしようとしている) の行を選択します
  • 状態 1 (エクスポートされようとしている) のものは 2 (エクスポート済み) に設定されます。
于 2013-05-28T17:41:54.437 に答える
0

この質問はおそらく古いですが、将来同じものを検索する人に役立つかもしれません。簡単な答えNO! . MySQL では、選択と更新を同時に行う方法はありません。あなたの質問によると、このようなストアドプロシージャを作成できます

CREATE PROCEDURE `GetandUpdate` (IN IDSet VARCHAR(300)
BEGIN
    select * from tbl_CSV where state = 0 and FIND_IN_SET(id, IDSet);
    update tbl_CSV set state = 1 where state = 0 and FIND_IN_SET(id, IDSet);
END

ここで、IDSet は3,14,8,1のようなカンマ区切りの文字列にすることができます

于 2014-01-25T17:36:36.427 に答える