这句话有什么问题?它适用于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
答案 0 :(得分:4)
FROM
中没有SELECT
条款。如果您仔细查看documentation for SELECT
,可以看到虽然FROM
是可选的,但如果有WHERE
条款,那么FROM
是必需的:
SELECT ...
[FROM table_references
[WHERE ...]
...]
如果您不需要桌子,可以使用FROM DUAL
。