2012-02-11 10 views
10

Mi sto stancando di provare a collegarmi a MSSQL, quindi sto passando a mysql. È un progresso lento. Ecco la mia stumper corrente: mssql:caso all'interno di un caso selezionato in mysql

create function W(m varchar(255)) returns int begin 

declare @e int 
set @e = (select COUNT(N) from P where N = m) 

declare @t int 
set @t = dbo.C(m) 

return case @t 
when 0 then -1 
when 1 then 
    case @e when 0 then -1 else 1 end 
when 2 then 
    case @e when 1 then -1 when 2 then 0 when 3 then 0 when 4 then 1 end 
when 3 then 
    case @e when 1 then -1 when 2 then 1 end 
when 4 then 
    case @e when 1 then -1 when 2 then 0 when 3 then 1 end 
end 
end 

vorrei cambiare questo per mysql. C'è un modo mysql valido per:

select select case n when 0 then 1 when 1 then 2 end into var 

? Che ne dici di

set var = select case n when [...] end 

?

risposta

29

questo vi guiderà nel usando Inline IF and CASE statements in MySQL

frammento:

SELECT CASE num_heads 
      WHEN 0 THEN 'Zombie' 
      WHEN 1 THEN 'Human' 
      ELSE 'Alien' 
     END AS race 
FROM user 

o

mysql> SET @val := CASE num_heads 
       WHEN 0 THEN 'Zombie' 
       WHEN 1 THEN 'Human' 
       ELSE 'Alien' 
      END AS race; 

mysql> SELECT @val; 
+0

Oh, vedo l'AS. Grazie mille! –