1

昨日、私はこの質問をしました。問題は、値が存在しない場合、テーブルに行を挿入する必要があることです。フェ

 If('x' NOT EXIXTS in (select campoX from table) then
 insert into table (...) values (...) etc.

どのようにできるのか?インターネット上では答えが見つかりません:(

4

4 に答える 4

1

デュアル テーブルを使用する:

INSERT INTO campoX (col1, col2, col3)
SELECT value1, value2, value3
FROM dual
WHERE NOT EXISTS(SELECT * 
                 FROM campoX 
                 WHERE col1=value1);
于 2013-02-20T12:41:55.507 に答える
1

テーブルの名前はtblだと思います。

INSERT INTO tbl (campoX ) 
    SELECT 'X' FROM DUAL 
    WHERE NOT EXISTS( 
                      SELECT campoX from tbl 
                      WHERE campoX ='X'
                     );

DUALこれは純粋に、すべての SELECT ステートメントに FROM 句と、場合によっては他の句を含める必要があるユーザーの便宜のためです。MySQL は句を無視する場合があります。テーブルが参照されていない場合、MySQL は FROM DUAL を必要としません。

他の人が言及したように、INSERT IGNOREcampoX が一意または主キー フィールドである場合は、ここでステートメントを使用できます。

于 2013-02-20T12:18:28.467 に答える
0

どうですか:

CASE 
    WHEN 'X' NOT EXIST IN (SELECT campoX FROM yourTable) THEN 
    INSERT INTO yourTable (...) VALUES (...) 
END CASE
于 2013-02-20T12:21:18.770 に答える
0

プログラミング言語を発明することは、問題を説明する最も適切な方法ではありません。

そのデータがまだデータベースに存在しない行のみを追加したいということですか? その場合は、テーブルに主キーまたは一意のキーが定義されていることを確認し、とにかく INSERT を実行しますが、重複キー エラーは無視してください。実際、MySQL では、'INSERT IGNORE....' を使用することで、重複キーのエラー生成を完全に抑制することができます。

于 2013-02-20T12:32:24.853 に答える