MySQL根据列值选择多个列

时间:2016-06-03 15:38:10

标签: mysql if-statement select case

我两次搜索互联网和整个Stackoverlow,但没有找到可行的解决方案。

假设我有一个包含以下列的表: A,B,C,d,E,F,G,H,I

a是1-16的整数 根据这个值,我必须选择是否选择b-i。

实施例: 如果a = 1我需要b,c,d,e,i。如果a = 2我需要e,g,h,i

所以我可以使用:

SELECT
CASE a WHEN 1 THEN b WHEN 2 THEN NULL ELSE NULL END as a
....
CASE a WHEN 1 THEN NULL WHEN 2 THEN g ELSE NULL END as g

是否有更简单的方式:

CASE a When 1 (select b,c,d,e,i)?

奖金愿望:我可以根据a的值选择吗?实施例

if a = 1 column b should be named "lol", if a = 2 b should be called "rofl".

1 个答案:

答案 0 :(得分:0)

我能想到的最接近的是你想要的列:

SELECT CASE a
           WHEN 1 THEN CONCAT_WS(', ', b, c, d, e, i)
           WHEN 2 THEN CONCAT_WS(', ', e, g, h, i)
       END AS result

另一种解决方案是使用UNION

SELECT a, b, c, d, e, i
FROM yourTable
WHERE a = 1
UNION
SELECT a, e, g, h, i, null
FROM yourTable
WHERE a = 2

请注意,根据a的值,您不能拥有不同的列别名。整个查询只有一组列名。在UNION中,它们来自第一个子查询中的列名或别名。