1つの列のSQLセット値が同じテーブル内の別の列の値と等しい


94

2つのDATETIME列を持つテーブルがあります。

それらの1つがNULLになることはありませんが、そのうちの1つがNULLになる場合があります。

列BのすべてのNULL行を列Aの値に等しく設定するクエリを作成する必要があります。

この例を試しましたが、MySQL WorkbenchがUPDATEのFROMを好きではないようなので、選択した回答のSQLが実行されません。

回答:


156

1つのテーブルだけで作業しているように聞こえるので、次のようにします。

update your_table
set B = A
where B is null


20

私はこのようにします:

UPDATE YourTable SET B = COALESCE(B, A);

COALESCEは、最初のnull以外の引数を返す関数です。

この例では、指定された行のBがnullでない場合、更新は何も行われません。

Bがnullの場合、COALESCEはそれをスキップし、代わりにAを使用します。


5

他の例があなたが探しているものだとは思いません。同じテーブルの別の列から1つの列を更新するだけの場合、このようなものを使用できるはずです。

update some_table set null_column = not_null_column where null_column is null

1

列Aから列Bへの対処に役立つサンプルコードを次に示します。

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;

モデレーターのメモ -投稿の有効な更新をロールバックしないでください。
Bhargav Rao
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.