0

私はいくつかの SQL を MySQL で動作させようとしていますが、この挿入ステートメントで問題が発生しています:

INSERT INTO properties (fkid, name, value)
    SELECT 3, 'foo', 'bar'
    WHERE NOT EXISTS (
        SELECT 1 FROM properties WHERE fkid = 3 AND name = 'foo' 
    )

fkid/name が既に存在する場合は何もしないはずです。Postgres でも​​動作するものが必要です。私は今、私には見えない愚かな何かがあると確信しています。

価値があるのは、エラーは次のとおりです。

You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near
'WHERE NOT EXISTS (SELECT 1 FROM vertex_properties WHERE vertex_id = 4 AND name ='

このサイトでここで見ることができる他の例から、それはうまくいくはずです。誰かが私を悲惨な状況から解放してください。

編集:明確にするために、クロスプラットフォーム(Postgres/MySQL)の「存在しない場合は挿入」ソリューションが必要です。INSERT IGNORE ...MySQL でのみ機能しINSERT ... SELECT WHERE NOT EXISTS ...、Postgres でのみ機能するようです。

4

1 に答える 1

0

WHERE を使用しているため、FROM 句が必要です。WHERE は、何かが存在してはならないテーブルを知る必要があります。

INSERT INTO properties (fkid, name, value)
SELECT 3, 'foo', 'bar'
FROM properties
WHERE NOT EXISTS (
    SELECT 1 FROM properties WHERE fkid = 3 AND name = 'foo' 
)
于 2013-07-03T18:37:02.840 に答える