一部のデータをCSVファイルにエクスポートする必要があります。これを行うにはSELECT
、特定の列を0に設定してこれらの行のコマンドを発行します。その後、それらの行を再度エクスポートしないように、これらの行を1に設定する必要があります。
この状況に直面するための最良のアプローチは何ですか?UPDATE
以前に選択したのとまったく同じ行を使用する「トランザクション」を意味します。
SELECT ... FOR UPDATE
行く方法はありますか?
一部のデータをCSVファイルにエクスポートする必要があります。これを行うにはSELECT
、特定の列を0に設定してこれらの行のコマンドを発行します。その後、それらの行を再度エクスポートしないように、これらの行を1に設定する必要があります。
この状況に直面するための最良のアプローチは何ですか?UPDATE
以前に選択したのとまったく同じ行を使用する「トランザクション」を意味します。
SELECT ... FOR UPDATE
行く方法はありますか?
これはあなたが探しているものですか?
UPDATE table SET column = 1 WHERE(
SELECT column FROM table WHERE column = 0)
それが誰かに役立つ場合、私がしたことは、テーブルに3つの状態フィールドを持つことでした.
レコードが挿入されるたびに、その初期状態は 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のようなカンマ区切りの文字列にすることができます