有没有一种方法来获取查询结果的列名

时间:2019-04-04 08:22:11

标签: mysql sql phpmyadmin

我需要从case查询中获取结果的列名,有办法吗?

SELECT
    (CASE
        WHEN a >= b AND a >= c AND a >= d AND a >= e THEN a
        WHEN b >= c AND b >= d AND b >= e THEN b
        WHEN c >= d AND c >= e THEN c
        WHEN d >= e THEN d
        ELSE          e
    END) as ans 
FROM response
where qno='1'

上面的代码给出a,b,c,d,e的值,但我想要a,b,c,d,e的结果作为结果

1 个答案:

答案 0 :(得分:3)

您需要另一个CASE表达式。

SELECT
    CASE
        WHEN a >= b AND a >= c AND a >= d AND a >= e THEN a
        WHEN b >= c AND b >= d AND b >= e THEN b
        WHEN c >= d AND c >= e THEN c
        WHEN d >= e THEN d
        ELSE e
    END as ans,
    CASE
        WHEN a >= b AND a >= c AND a >= d AND a >= e THEN 'a'
        WHEN b >= c AND b >= d AND b >= e THEN 'b'
        WHEN c >= d AND c >= e THEN 'c'
        WHEN d >= e THEN 'd'
        ELSE 'e'
    END as column
FROM response
where qno='1'

您还可以使用GREATEST()函数来简化此操作。

SELECT 
    GREATEST(a, b, c, d, e) AS ans,
    CASE GREATEST(a, b, c, d, e)
        WHEN a THEN 'a'
        WHEN b THEN 'b'
        WHEN c THEN 'c'
        WHEN d THEN 'd'
        ELSE 'e'
    END AS column
FROM response
WHERE qno = '1'