数据库
首页 > 数据库> > MySQL CASE提供Err 1064

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