MySQL で、col2 と col3 の値が NULL でない場合、col1 の値を col2 の値に設定する方法は?
UPDATE t SET col1=col2 WHERE col2 IS NOT NULL AND col3 IS NOT NULL;
これはうまくいきますか?
ソリューション
1) トランザクションを使用する
2) 一時テーブルを使用する
3) sqlfiddle で単純なケースをテストする
ええ、これは完全に合法です。将来的には、SQL Fiddle で何かを実行してみてください。 http://www.sqlfiddle.com/#!2/6fb42/1
わかりました、あなたはデータベースを管理していますが、テストするサンドボックス環境がありません... :(
データベースサンドボックスを作成します。
mysqldump realdb tablename> dump.sql
mysqlサンドボックス<dump.sql
出来上がり、プレイするサンドボックス環境があります:)
編集:
新しいデータベースを作成できないことを確認しました。一時テーブルについて考えたことはありますか?
テーブルを作成するときにTEMPORARYキーワードを使用できます。TEMPORARYテーブルは現在の接続にのみ表示され、接続が閉じられると自動的に削除されます。これは、2つの異なる接続が、互いに競合したり、同じ名前の既存の非TEMPORARYテーブルと競合したりすることなく、同じ一時テーブル名を使用できることを意味します。(一時テーブルが削除されるまで、既存のテーブルは非表示になります。)一時テーブルを作成するには、CREATETEMPORARYTABLES権限が必要です。
http://dev.mysql.com/doc/refman/5.1/en/create-table.html
編集2:
最も簡単な解決策を忘れました:( MYISAMテーブルではこれを行わないでください。INNODBでのみ!!!)自動コミットを無効にし、必要なことを試して、それが目的であるかどうかを確認するためにいくつかの選択を行い、機能しない場合は単にロールバックします。