首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL中迭代CASE语句?

如何在SQL中迭代CASE语句?
EN

Stack Overflow用户
提问于 2017-01-12 04:05:45
回答 1查看 668关注 0票数 0

我想用mySQL编写一个查询,格式如下:

代码语言:javascript
复制
SELECT *,
    CASE
        WHEN <column name> = 1  THEN 1
        ELSE 0
        END as "column_1",
    CASE
        WHEN <column name> = 2 THEN 1
        ELSE 0
        END as "column_2",
    CASE
        WHEN <column name> = 3 THEN 1
        ELSE 0
        END as "column_3"
    FROM <table name>;

我想为大量的案例(大约1000个案例)编写这个查询,这样就可以创建1000个新列来满足上面给出的条件。我如何在mySQL中迭代这个过程,这样我就不必像上面那样手动编写每一行代码(只有3种情况)?

EN

回答 1

Stack Overflow用户

发布于 2017-01-12 04:24:27

这可能并不合适,但如果您可以接受输出的一列(作为字符串而不是多列),则可以执行以下操作:

代码语言:javascript
复制
select t.id,
       group_concat( (case when t.column = v.value then '1' else '0' end) order by v.ordering) as string_flags
from (select 1 as ordering, 1 as value union all
      select 2, 2 union all
      . . .
     ) v cross join
     t
group by t.id;

这只是一个想法。性能是一个问题,但它也绕过了行中最大列数的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41599800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档