DATAINSERT IDの値が
存在しない場合、私は、次の形式のデータのセットを有する:
CAR_MAKE TABLE
ID MAKE
1 Ford
2 Tesla
3 Acura
4 Honda
5 Toyota
MAKE_NOTES TABLE
NOTE_ID MAKE_ID MAKE_NAME NOTE
1 1 Ford New QNX-Based Sync System
2 2 Tesla Looking forward to Model 3
3 5 Toyota Updated Corolla 2018
4 Null Ferrari Very Fast and Very Red
をIとの間(make_name)のデータが繰り返し知っています表1と表2を参照してください。私はcar_makeで最初にエントリーが行われたことを保証することもできません。そのような場合、make_notes.make_idはnullにする必要があります。
WHAT Iは私が何をしようとしているSO FAR
やったことは、それはそれ以外の場合はcar_make.idを挿入し、car_makeに存在しない場合はmake_idにnullを挿入し、make_notesに行を挿入します。
これは、make_nameがcar_makeに存在する場合にはうまくいきますが、car_makeに存在しないmake_nameを持つレコードを挿入しようとすると、レコードは挿入されません(エラーもスローされません)。
INSERT INTO make_notes (
make_id,
make_name,
note
)
SELECT
id,
'ford',
'New Note'
FROM car_make
WHERE make = 'ford';
また、私はサブクエリとしてこれを使用しようとしました:
SELECT
CASE
WHEN (SELECT EXISTS (SELECT 1 FROM car_make where make = 'Ferrari') = 1)
THEN car_make.id
ELSE null
END AS make_id
FROM car_make;
私はALBEエラーをスローせずに私のメインのクエリにそれをintergrateされていません。独立したクエリとして、car_makeの各エントリに対して1つの行を返します。「Ferrari」が存在しない場合はnull、存在する場合は各IDを返します。
QUESTION
は、どのように私は 'make_notes' 内に挿入し、make_nameはcar_makeに存在しない場合はnullを挿入し、make_nameが存在しない場合car_make.id挿入するINSERTクエリを作成するのですか?