2017-08-07 3 views
0

私はこれに似て読んでいましたSQL文を探しています:挿入する方法 - 一致する列を持つ別のテーブルに存在しない場所はありますか?

INSERT INTO some_table 
    (a, b, c) 
VALUES 
    ('a', 'b', 'c') 
RETURNING 
    a 
WHERE NOT EXISTS 
(
    SELECT 
    some_column 
    FROM 
    another_table 
    WHERE 
    some_cond='is_true' 
); 

上記はWHERE NOT EXISTSとして機能しないがSELECT FROMないINSERT INTOが続くことがあります。別のテーブルのselect文が何も返さない場合にのみ、テーブルに挿入する方法はありますか?

EDIT2:

マッチング他のテーブルの列とにNOT NULL制約を含むように変更データベース・スキーママッチ「に被-に挿入」意図した機能を取得することを選択してサブクエリを使用するカラムと@ Isaiah3015が示唆したものを使用してください。

答えて

1

最善の方法は、あなたが

INSERT INTO table (column1, column2, column 3, etc) 
SELECT column1, column2, column3, etc from table where condition = 'whatever 
condition you want inserted into the table' 
テーブル '二重' が 'A' を持っていない
+0

私の場合、2つのテーブルが異なっていて、一致するカラムがありません。 –

+0

一致するデータがまったくない場合、どのようにNOT INまたはNOT EXISTを判別しますか?その後、最初のテーブルはSELECT INTOだけになります。存在しない必要はありません。 – Isaiah3015

+0

'SELECT INTO'はあるテーブルから別のテーブルにデータをコピーすることを前提としていますが、その機能は必要ありません。 –

1

は、私はあなたがinsert . . . selectをしたいと思う:

INSERT INTO some_table(a, b, c) 
    SELECT 'a', 'b', 'c' 
    FROM dual 
    WHERE NOT EXISTS (SELECT some_column 
         FROM another_table 
         WHERE some_cond = 'is_true' 
        ) 
RETURNING a; 
+0

、B「を選択したいものとINSERTのsytanxを作成することです'、' c 'は私の場合です。それらは、一致する列のない別のテーブルです。 –

+0

@ RobertC.Holland。 。 。 '' a'''、 '' b'''、 '' c''はあなたの質問の定数文字列であり、この答えでは定数文字列です。これは 'dual'の列とは関係ありません。 –

関連する問題