2012-05-26 22 views
0

所以我有一個問題:Mysql的瑪吉5列到一個和repleace行

SELECT worker_ID as widp, DAYS, MAX(ID_WERSJI) max , funcion1 as FUN1,function2 as FUN2,function3 as FUN3,function4 as FUN4,function5 as FUN5 
       FROM `grafik201105` 
        WHERE 
         funcion1 IN ('one','two','three','four','five','six') OR 
         function2 IN ('one','two','three','four','five','six') OR 
         function3 IN ('one','two','three','four','five','six') OR 
         function4 IN ('one','two','three','four','five','six') OR 
         function5 IN ('one','two','three','four','five','six') AND 
         active=1 
         GROUP BY widp, FUN1,DAYS) as dni 

,現在我需要得到FUN1,FUN2,FUN3,FUN4和fun5在一列( 'give_me_all') 及!在fun1 ='one'中將'one'替換爲'first',如果'two'then second,three => third ...

我嘗試使用if(fun1 ='one','first',fun1 )但我認爲這裏更好的解決方案是使用CASE,但我不知道如何使用它

+0

小心在一個地方使用OR和AND而不使用括號。它首先執行'(function5 IN('one','two','three','four','five','six')AND active = 1)',然後只有其他的OR,所以我假設它不是你想要做的。 –

+0

如果你想使用'CASE'這看起來合乎邏輯,你應該寫一個函數來把它翻譯成第一個等等。 –

+0

@AndriusNaruševičius,括號?你能告訴我一些例子嗎?我不知道它是什麼。艾哈,以及如何塑造這五列? – breq

回答

1

那麼要將兩列或多列組合成一個,你只需簡單地做(function1+function2+function3+function4+function5) AS give_me_all,但正如我所說的,最好的將爲你做一個函數來代替onefirst然後它會像(change(function1)+change(function2)+change(function3)+change(function4)+change(function5)) AS give_me_all一樣,但是編寫一個函數是一個更高級的事情。嘗試閱讀更多here。 否則看起來會比較難看,但還是有可能

`((CASE 
    function1 
     WHEN 'one' THEN 'first'; 
     WHEN 'two' THEN 'second'; 
    END;)+ 
    (CASE 
    function2 
     WHEN 'one' THEN 'first'; 
     WHEN 'two' THEN 'second'; 
    END;) 
    ...) AS give_me_all` 

看看它是如何壞的容貌?最好學會編寫自己的功能:)