如何解决MYSQL 尝试根据条件获取值时出错的情况
为什么我的这个查询出错?有什么我遗漏的吗?
所以如果“via”字段是O,我想得到online_date,然后如果“via”字段是M,我想得到manual_date
SELECT a.seqreq,b.idfieldb,c.idfieldc,a.number_given,case upper(a.via) when 'O' then 'Online'
when 'O' then 'Online'
when 'M' then 'Manual'
else a.via
end as via,case when upper(a.via) when 'O' then a.online_date
when 'M' then a.manual_date //it says error on this line ?
else a.others_date
end as date_registered
from mytablea a
left join tbl_b b on a.idfielda=b.idfieldb
left join tbl_c c on a.idfielda=c.idfieldc
left join tbl_d d on a.userEntry=d.NoIdUser
错误信息:
W (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 'when 'O' then
解决方法
查询中有一些语法错误。 a.seqreq
后缺少逗号(,)。在第二个 case
语句中,它将是 case upper(a.via) when 'O' then a.online_date
而不是 case when upper(a.via) when 'O' then a.online_date
。
SELECT a.seqreq,b.idfieldb,c.idfieldc,a.number_given,case upper(a.via)
when 'O' then 'Online'
when 'M' then 'Manual'
else a.via
end as via,case upper(a.via) when 'O' then a.online_date
when 'M' then a.manual_date
else a.others_date
end as date_registered
from mytablea a
left join tbl_b b on a.idfielda=b.idfieldb
left join tbl_c c on a.idfielda=c.idfieldc
left join tbl_d d on a.userEntry=d.NoIdUser
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。