在mysql上插入查询 - WHERE NOT EXISTS

问题描述 投票:0回答:1

我收到以下错误:

1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在'WHERE NOT EXISTS附近使用正确的语法(SELECT * FROM training2subjects WHERE trainingID = 3 AND subj'在第1行

当我在mysql上启动此查询时 -

INSERT INTO training2subjects ( trainingID, subjectID ) 
VALUES ( 3, 5 ) 
WHERE NOT EXISTS ( 
        SELECT * 
        FROM training2subjects 
        WHERE trainingID = 3 
        AND subjectID = 5 
        LIMIT 0,1 
    )

当我运行子查询时,它工作正常

SELECT * 
        FROM training2subjects 
        WHERE trainingID = 3 
        AND subjectID = 5 
        LIMIT 0,1

我想仅在相同的数据尚不存在时插入

mysql
1个回答
0
投票

你需要使用INSERT INTO - SELECT

INSERT INTO training2subjects ( trainingID, subjectID ) 
SELECT 3, 5 
WHERE NOT EXISTS (SELECT * 
                  FROM training2subjects 
                  WHERE trainingID = 3 AND subjectID = 5);

DBFiddle Demo

© www.soinside.com 2019 - 2024. All rights reserved.