MySQL CASE提供Err 1064
作者:互联网
我一直在寻找这个答案.我有两个相同的表,contacts和contacts_copy.每个都有全名,公司,街道,城市,州和邮政编码.如果contacts.street不是NULL,那么我选择那些项目.如果是,我从重复表中选择那些项目.
SELECT contacts.fullname,
CASE WHEN contacts.street IS NULL
THEN
contacts_copy.Company,
contacts_copy.street,
contacts_copy.city,
contacts_copy.state,
contacts_copy.zip
ELSE
contacts.Company,
contacts.street,
contacts.city,
contacts.state,
contacts.zip
END CASE
FROM contacts_copy, contacts
WHERE contacts.Company = contacts_copy.fullname
AND contacts.kind = 'Person'
ORDER BY contacts.last DESC
I keep getting:
[Err] 1064 - 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 '
contacts_copy.street,
contacts_copy.city,
contacts_copy.state,
contacts_cop' at line 4
必须有一个更简单的方法来执行此操作. MySQL错误消息是毫无帮助的.
谢谢,
本
解决方法:
我认为您无法使用MySQL或我见过的任何一种SQL来做到这一点.您选择的列必须是特定的,但值可以是有条件的.
您可以做的是为结果中的每一列提供一个IF()子句:
SELECT contacts.fullname,
IF(contacts.street IS NULL, contacts_copy.Company, contacts.Company),
...
那应该有相同的效果.
标签:mysql-error-1064,case,mysql 来源: https://codeday.me/bug/20191031/1979637.html