0

メーターが存在するかどうかを確認してから更新を行うクエリを作成しようとしていますが、月次データ テーブルへの挿入は行われません。問題は、構文について混乱していて、その方法がわからないことです!

これがデータベースの設計です。メーター番号が 2012345 の場合、どうすればよいですか? ありがとうございましたここに画像の説明を入力

4

2 に答える 2

1

SQL Server の場合 (nameデモとして使用すると、もちろん、より多くのフィールドが必要になります)

MERGE meters AS target
USING (SELECT '2012345') AS source (meternumber)
ON (target.meternumber = source.meternumber)
WHEN MATCHED THEN 
  UPDATE SET name='MeterUpdate#1', meternumber=source.meternumber
WHEN NOT MATCHED THEN 
  INSERT (name, meternumber) VALUES ('MeterInsert#1', source.meternumber);

でテストする SQLfiddle

MySQL で、meters(meternumber) に一意のインデックスを作成します。

CREATE UNIQUE INDEX bop ON meters(meternumber);

次に、使用して挿入/更新します。

INSERT INTO meters (name, meternumber) VALUES ('MeterInsert#1', '2012345')
    ON DUPLICATE KEY UPDATE name='MeterUpdate#1', meternumber='2012345';

別の SQLfiddle

于 2013-07-01T20:31:21.613 に答える