为什么这个 strcmp() 语法在 mysql-5.7 中给我一个错误?
Why does this strcmp() syntax give me an error in mysql-5.7?
我试图用字符串测试 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() 时出现此错误吗?
感谢 Paul T.,答案是:
INSERT 语句没有 WHERE 子句,除非执行 INSERT ... SELECT 语句,然后查询的 SELECT 部分可以使用 WHERE 子句。
我试图用字符串测试 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() 时出现此错误吗?
感谢 Paul T.,答案是:
INSERT 语句没有 WHERE 子句,除非执行 INSERT ... SELECT 语句,然后查询的 SELECT 部分可以使用 WHERE 子句。