Mysql case when 后接多个字段值

MYSQL
CASE WHEN :
A= 1 THEN后接多个字段:B、C、D
A=2 THEN 后接多个字段值:E、F、G
这种该怎么处理

在MySQL中,您可以使用CASE WHEN语句来根据条件返回不同的值。如果您想要根据A的值返回多个字段,您可以使用以下语法:

sql

SELECT CASE WHEN A = 1 THEN B, C, D ELSE E, F, G END AS result FROM your_table;

在这个例子中,如果A的值等于1,则会返回B、C、D这三个字段的值,并将结果命名为"result"。否则,如果A的值不等于1,则会返回E、F、G这三个字段的值,同样也将结果命名为"result"。

请注意,这个语句只返回一个结果集,其中每个行都包含一个结果值。如果您想要将多个字段的值分别作为不同的列返回,您可以使用SELECT语句中的多个列名,例如:

sql

SELECT CASE WHEN A = 1 THEN B ELSE E END AS col1,   
       CASE WHEN A = 1 THEN C ELSE F END AS col2,  
       CASE WHEN A = 1 THEN D ELSE G END AS col3 FROM your_table;

在这个例子中,根据A的值分别返回B、C、D或E、F、G,并将它们分别命名为"col1"、"col2"和"col3"。

SELECT 
    CASE 
        WHEN A = 1 THEN CONCAT(B, ',', C, ',', D)
        WHEN A = 2 THEN CONCAT(E, ',', G, ',', F)
    END AS MyCol
FROM table;

  • 以下回答由chatgpt基于相关博客总结生成:

    在MySQL中使用CASE WHEN语句时,可以根据A的值进行判断,然后返回不同的多个字段的值。下面是具体的解决方案:

    1. 首先,使用SELECT语句查询数据,并使用CASE WHEN语句进行判断和返回相应的值。例如,当A等于1时,返回B、C和D的值;当A等于2时,返回E、F和G的值。
    SELECT 
        CASE 
            WHEN A = 1 THEN CONCAT(B, ', ', C, ', ', D)
            WHEN A = 2 THEN CONCAT(E, ', ', F, ', ', G)
        END AS result
    FROM your_table;
    
    1. 在上述SELECT语句中,使用CONCAT函数将多个字段的值连接成一个字符串,并使用逗号分隔。

    2. 如果需要在结果中显示其他列的值,可以在SELECT语句中添加相应的列名,并在CASE WHEN语句之前进行选择。

    SELECT 
        A, 
        CASE 
            WHEN A = 1 THEN CONCAT(B, ', ', C, ', ', D)
            WHEN A = 2 THEN CONCAT(E, ', ', F, ', ', G)
        END AS result
    FROM your_table;
    
    1. 运行以上查询语句,即可根据A的值返回相应的多个字段的值。

    如果以上解决方案无法满足你的需求,或者有其他问题,请告知,我将尽力提供帮助。


SELECT 
  CASE 
    WHEN A = 1 THEN B 
    WHEN A = 2 THEN E 
  END AS col1, 
  CASE 
    WHEN A = 1 THEN C 
    WHEN A = 2 THEN F 
  END AS col2, 
  CASE 
    WHEN A = 1 THEN D 
    WHEN A = 2 THEN G 
  END AS col3 
FROM 
  your_table;