使用Sqlite中的WHERE NOT EXISTS返回语法错误

使用Sqlite中的WHERE NOT EXISTS返回语法错误,sqlite,discord.js,Sqlite,Discord.js,(这涉及使用Discord.js和sqlite v3的Discord机器人,而不是sqlite3) 我目前正试图使用WHERE NOT EXISTS将一行添加到我的Sqlite表中,但前提是没有一行“serverid”是当前服务器的ID并且类型已经是spam 我试过这个: sql.run(`INSERT INTO filters WHERE NOT EXISTS(SELECT 1 FROM filters WHERE serverid = "${msg.guild.id}"

(这涉及使用Discord.js和sqlite v3的Discord机器人,而不是sqlite3) 我目前正试图使用WHERE NOT EXISTS将一行添加到我的Sqlite表中,但前提是没有一行“serverid”是当前服务器的ID并且类型已经是spam

我试过这个:

sql.run(`INSERT INTO filters WHERE NOT EXISTS(SELECT 1 FROM filters WHERE serverid = "${msg.guild.id}" AND type = "Spam") (serverid, type, active, action, time) VALUES (?, ?, ?, ?, ?)`, msg.guild.id, `Spam`, 0, `delete`, 60)
如果还没有具有该ID和类型的行,则可以使用该方法,但一旦该行存在,就会出现“语法错误:WHERE”。 它没有告诉我问题出在哪里,我反复检查了多次语法,应该没问题。
这在sqlite中不起作用吗?还是我的语法有误?

查询的语法有误。
您应该使用
INSERT。。。选择
而不是
插入。。。值

INSERT INTO filters (serverid, type, active, action, time)
SELECT ?, ?, ?, ?, ?
WHERE NOT EXISTS(SELECT 1 FROM filters WHERE serverid = "${msg.guild.id}" AND type = "Spam")`

这很奇怪,我在项目的其他地方都使用了我的原始语法,而且效果很好。但是谢谢,这就解决了!