为什么这个strcmp()语法在mysql-5.7中给我一个错误?

时间:2017-08-25 05:01:33

标签: mysql mysql-error-1064 strcmp

我试图用字符串测试strcmp()函数 在此SQL语句中包含随机电子邮件地址:

INSERT IGNORE INTO possible_duplicate_email
-> (human_id, email_address_1, email_address_2, entry_date)
-> VALUES(LAST_INSERT_ID(), 'bobyfischer@mymail.com', 
                                   'bobbyfischer@mymail.com')
-> WHERE ABS( STRCMP('bobbyrobin@mymail.com', 'bobyrobin@mymail.com') ) = 1;

然后我收到此错误消息:

ERROR 1064 (42000): 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 ABS( STRCMP('bobbyrobin@mymail.com', 
'bobyrobin@mymail.com') ) = 1' at line 4

我已经从mysql-5.7参考手册中读取了strcmp()文档 并尝试了一个简单的SELECT语句,看看strcmp()返回了一个数字 值为-1,0,1,它确实如此,我已经包含了IGNORE选项 到SQL语句以便继续进行错误。有人可以向我解释为什么在WHERE子句中运行strcmp()时会出现此错误吗?

1 个答案:

答案 0 :(得分:0)

感谢Paul T.,答案是:

INSERT语句没有WHERE子句,除非执行INSERT ... SELECT语句,否则查询的SELECT部分​​可以使用WHERE子句。