首页 > 解决方案 > 根据行名获取列名

问题描述

在此处输入图像描述

我想获取值为 1 的行 V1 并根据该值获取列名,例如v1 = d1,d2,d5,d6,d8,d9在 mysql 中

我忘了提到我的专栏是动态添加的。

编辑: - 问题解释......

OP想要选择variant_id =“v1”并且d1 - d9列有1个值的列名......

标签: phpmysqldatabaseweb

解决方案


您可以尝试使用 concat 和 if

    select  concat( 
          if(d1, 'd1', null) 
        , if(d2, ',d2', null) 
        , if(d3, ',d3', null) 
        , if(d4, ',d4', null) 
        , if(d5, ',d5', null)
        , if(d6, ',d6', null)
        , if(d7, ',d7', null)
        , if(d8, ',d8', null) 
        , if(d9, ',d9', null)
        )
    from online_defect_table
    where variant_id = 'V1'

或者如果所有操作数都为空,则避免出现问题

    select  concat( 
          if(d1, 'd1', '') 
        , if(d2, ',d2', '') 
        , if(d3, ',d3', '') 
        , if(d4, ',d4', '') 
        , if(d5, ',d5', '')
        , if(d6, ',d6', '')
        , if(d7, ',d7', '')
        , if(d8, ',d8', '') 
        , if(d9, ',d9', '')
        )
    from online_defect_table
    where variant_id = 'V1'

推荐阅读