簡體   English   中英

如何在SQL中迭代CASE語句?

[英]How can I iterate CASE statements in SQL?

我想在mySQL中編寫具有以下形式的查詢:

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種情況)?

這可能不合適,但是如果您可以使用一列輸出(作為字符串而不是多列),那么您可以執行以下操作:

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;

這只是一個想法。 性能是一個問題,但同時也解決了連續的最大列數問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM