2017-04-13 140 views
0

我有这个疑问在MySQL:与MYSQL SELECT IF语句和

SELECT col1, col2, coletc, IF(a.status_working == 'normal', a.status_working == 'NN' AND a.status_working == 'overtime', a.status_working == 'OT') as status_working 

我的整个查询:

HIDDEN for security reasons. 

MYSQL返回我一个错误。我需要制作三个条件,如果status_working == '加班'然后写入输出OT,如果status_working = '正常'然后写入输出NN,如果status_working == 'overtime_s'然后写输出OTS

我不太擅长mysql,所以有人可以帮我吗?

谢谢。

+0

if语句就像'IF(条件,真实结果,错误结果)'在你的榜样,你有3个条件'a.status_working ==“'normal'' a.status_working =='NN'和a.status_working =='overtime''和'a.status_working =='OT''你可能会更好用case语句https://dev.mysql.com/doc/refman /5.7/en/control-flow-functions.html像... nvm某人刚刚发布了如何做到这一点。 –

+0

您的整个查询都是错误的。您正在使用'group by a.id',但是您在select子句中选择了没有聚合函数的其他列。请阅读'group by'的一些教程,并使您当前的查询工作。那么只有你可以考虑添加'case'。祝一切顺利! – Utsav

回答

0

使用案例

SELECT col1, col2, coletc, 
CASE status_working 
    when 'normal' then 'NN' 
    when 'overtime' then 'OT' 
    when 'overtime_s' then 'OTS' 
END as status_working 
From your_table 
+0

当我运行这个查询时,出现错误:'CASE a.status_working when'normal''NN''''''OT'END as status_working,ROUND(a.act_hours,1)AS'act_hours',b .personnel_name'出现许多意外的令牌错误。 –

+1

首先运行没有case语句的查询。如果你没有'case'没有得到任何错误,那么给你的整个查询。否则,请先解决您的查询的其余部分。 – Utsav

+0

已编辑的问题。整个查询添加到问题中。你介意检查一下吗?谢谢 –