簡體   English   中英

從單個結果返回SET作為多行

[英]Return SET from single result as multiple rows

我有一個MySQL 5.5表,其中的列包含SET數據類型。 每個條目的SET列都有0到4個值。 我想編寫一條SELECT語句,該語句將為SET中的每個值返回單獨的一行。 僅用一條語句就能做到嗎?

預先感謝,彼得

編輯

編輯以包括一個示例:

該表的結構非常基本:

  • INT(6)未簽名的主鍵(id)
  • VARCHAR(20)唯一索引(材料)
  • SET('固體','液體','氣體','等離子')(狀態)

在上面的示例中,您可以想象有一個表,其中填充了各種材料(材料),每個表的SET列均包含該材料可以存在的所有狀態(狀態)。我希望看到該語句返回單獨的一行對於材料具有的每個SET值,請復制ID和材料名稱。

希望這有助於澄清問題。

如果有20種可能的狀態,但一個材料最多只能有4種:

試試這個解決方案:

SELECT 
    a.material, 
    a.states
FROM
(
    SELECT material, SUBSTRING_INDEX(states,',',1) AS states
    FROM settbl

    UNION

    SELECT material, SUBSTRING_INDEX(SUBSTRING_INDEX(states,',',-3),',',1) AS states
    FROM settbl

    UNION

    SELECT material, SUBSTRING_INDEX(SUBSTRING_INDEX(states,',',-2),',',1) AS states
    FROM settbl

    UNION

    SELECT material, SUBSTRING_INDEX(states,',',-1) AS states
    FROM settbl
) a
ORDER BY
    a.material

SQL提琴演示

暫無
暫無

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

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