我有一个 SELECT 查询,其中有 ORDER BY
我想要的是
if(type=2 AND (station=0 OR station=1)) then
SELECT * FROM table
ORDER BY CASE type
WHEN 1 OR 2 THEN 1
WHEN 3 THEN 2
ELSE 4
END,CAST(choice AS SIGNED ) DESC
如果(类型=2 AND 站=2)则
SELECT * FROM table
ORDER BY CASE type
WHEN 1 THEN 1
WHEN 2 THEN 2
WHEN 3 THEN 3
ELSE 4
END,CAST(choice AS SIGNED ) DESC
是否可以将 CASE 放置在 IF 条件内以及如何放置?
我试过了
SELECT * FROM table
ORDER BY IF(type=2 AND (station=0 OR station=1))
{
CASE type
WHEN 1 OR 2 THEN 1
WHEN 3 THEN 2
ELSE 4
END,CAST(choice AS SIGNED ) DESC
}
ELSEIF(type=2 AND station=2)
{
CASE type
WHEN 1 THEN 1
WHEN 2 THEN 2
WHEN 3 THEN 3
ELSE 4
END,CAST(choice AS SIGNED ) DESC,
}
我认为你不能在 if 语句中嵌套 case 语句。
但是您可以将 case 嵌套在 case 语句中。
尝试一下,
SELECT * FROM `table`
ORDER BY CASE WHEN type=2 AND (station=0 OR station=1)
THEN
CASE type
WHEN 1 OR 2 THEN 1
WHEN 3 THEN 2
ELSE 4
END
WHEN type=2 AND station=2
THEN
CASE WHEN 1 THEN 1
WHEN 2 THEN 2
WHEN 3 THEN 3
ELSE 4
END
END ,CAST(choice AS SIGNED ) DESC
参见示例此处