注:この質問は、特にHSQLDBとInformixの問題です。HSQLDB - クエリー - 最初のレコードが存在しない場合は挿入してください。
テーブルにエントリが存在しない場合は新しいエントリを挿入したいが、既存のエントリに基づいて既存のクエリを使用して挿入することができます。
例:
INSERT INTO test(column1)
(SELECT DISTINCT 3
FROM test
WHERE NOT EXISTS (SELECT * FROM test WHERE column1 =3));
問題は:ザ条件がサブクエリと組み合わせて使用され、少なくとも一つの行サブクエリを返した場合、成立していると考えられるが存在します。 SELECT、INSERT、UPDATE、またはDELETEステートメントでのみ使用できます。
INSERTが正しくありません。まだ存在しないときに挿入したい新しいデータはどこにありますか? – fredt
@fredt:サンプルクエリでは、新しいデータは「3」で、EXISTSサブクエリの選択リストとWHERE句で参照されます。 –
私はあなたの問題が何であるかはっきりしていません。 INSERTステートメントがあなたがしたいと言っていることをなぜ行うのかについてのあなたの「問題です」の段落の概要を説明しています。そのため、どこに不具合があるのか分かりません。問題を別の方法で処理する他のDBMSはありますか?適切な主キー制約がある場合、同じキー・データを持つ表にすでに行がある場合、単純なINSERTは挿入に失敗します。あなたがしなければならないことは、エラーを無視することです(特定のエラー条件をすべて無視するのではなく無視します)。あなたが望むなら、ストアドプロシージャを使ってそれを処理することができます。問題を明確にしてください。 –