MySql。这个insert+select+where语句有什么错误?

MySql。这个insert+select+where语句有什么错误?,mysql,Mysql,这句话有什么不对?上次我测试它时,它与sqlite和MS sql一起工作 我想要一个选择,除非没有匹配的名称或电子邮件。然后我想插入。我把它作为一个语句,因为它很容易作为一个语句来保证并发安全。这不是那么复杂的陈述 INSERT INTO `user_data` ( `last_login_ip`, `login_date`, ...) SELECT @0, @14 WHERE not exists (SELECT * FROM `user_data` WHERE `name` = @15 O

这句话有什么不对?上次我测试它时,它与sqlite和MS sql一起工作

我想要一个选择,除非没有匹配的名称或电子邮件。然后我想插入。我把它作为一个语句,因为它很容易作为一个语句来保证并发安全。这不是那么复杂的陈述

INSERT INTO `user_data` (
`last_login_ip`, `login_date`,
...) SELECT 
@0,
@14 WHERE not exists (SELECT * FROM `user_data` WHERE `name` = @15 OR 
`unconfirmed_email` = @16 LIMIT 1);
例外情况

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 * FROM `user_data` WHERE `name` = 'thename' OR 
`unconfirmed' at line 31
SELECT中没有FROM子句。如果仔细查看,您可以看到,尽管FROM是可选的,但如果有WHERE子句,则FROM是必需的:

SELECT ...
[FROM table_references
[WHERE ...]
...]
如果不需要表格,可以使用FROM DUAL。

SELECT中没有FROM子句。如果仔细查看,您可以看到,尽管FROM是可选的,但如果有WHERE子句,则FROM是必需的:

SELECT ...
[FROM table_references
[WHERE ...]
...]
如果你不需要一张桌子,你可以从双人床上使用