MySQL 中选择语句中的嵌套 case 语句

12

我已经厌倦了尝试连接MSSQL,所以我正在转向mysql。进展缓慢。这是我的当前难题:

mssql:

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

我想将这个转换为mysql。是否有一个有效的mysql方式来实现以下操作:
select select case n when 0 then 1 when 1 then 2 end into var

抱歉,您需要提供需要翻译的内容。
set var = select case n when [...] end

?

2个回答

31
这将指导您在MySQL中使用内联IF和CASE语句
代码片段:
SELECT CASE num_heads
           WHEN 0 THEN 'Zombie'
           WHEN 1 THEN 'Human'
           ELSE 'Alien'
       END AS race
FROM user

或者

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

mysql> SELECT @val;

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接