2

次の表を検討してください

--------------------------------
ID   | ColA    | ColB   | ColC
--------------------------------
1    | ABC     |        |
2    |         | XYZ    |
3    | PQR     |        |
4    | MNO     | PQR    |

ここで、このテーブルに値(EFG)を追加する必要があります。ここID = 1では、のような任意の列ColAColBまたはColC空き(空)に応じて値を追加します。これは動的またはプログラムで行われます(任意の言語を考慮してください。ロジックを知りたいだけです)。

例えば:

の場合ID = 1、列ColBは最初の空き列であるため、値で更新されます。
の場合ID = 2、列ColAは最初の空き列であるため、値で更新されます。
の場合ID = 3、列ColBは最初の空き列であるため、値で更新されます。
の場合ID = 4、列ColCは最初の空き列であるため、値で更新されます。

4

3 に答える 3

3

レコードはすでに挿入されているため、行を更新するだけで済みます。

UPDATE  tableName
SET     ColA = CASE WHEN ColA IS NULL THEN 'NewValue' ELSE ColA END,
        ColB = CASE WHEN ColA NOT NULL AND ColB IS NULL THEN 'NewValue' ELSE ColB END,
        ColC = CASE WHEN ColA NOT NULL AND ColB NOT NULL AND ColC IS NULL THEN 'NewValue' ELSE ColC END
WHERE   ID = 1
于 2013-02-12T03:17:04.807 に答える
0

これを出発点として使用します。

UPDATE Table Set 
ColA = CASE WHEN ColA IS NULL THEN 'EFG' ELSE ColA END,
ColB = CASE WHEN ColB IS NULL THEN 'EFG' ELSE ColB END,
ColC = CASE WHEN ColC IS NULL THEN 'EFG' ELSE ColC END
WHERE ID = 1
于 2013-02-12T03:17:12.277 に答える
0

これを試して:

UPDATE table
   SET ColA=IF(ColA IS NULL, 'EFG', ColA),
       ColB=IF(ColA IS NULL, ColB, IF(ColB IS NULL, 'EFG', ColB)),
       ColC=IF(ColA IS NULL, ColC, IF(ColB IS NULL, ColC, IF(ColC IS NULL, 'EFG', ColC)))
 WHERE ID=1

、、、およびがすべていっぱいの場合の動作を定義することはできませんが、上記のサンプルコードでは、何も変更されませColAん。ColBColC

于 2013-02-12T03:18:29.530 に答える