2017-04-13 186 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

已編輯的問題。整個查詢添加到問題中。你介意檢查一下嗎?謝謝 –