我想获取值为1的第V1行,并根据该值获取列名
例如mysql中的v1 = d1,d2,d5,d6,d8,d9
我忘了提到我的专栏是动态添加的。
已编辑:-问题说明...
OP要选择column_id =“ v1”且d1- d9列具有1个值的列名称...
答案 0 :(得分:1)
您可以尝试使用concat,如果
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'
答案 1 :(得分:0)
我假设您知道如何从数据库中获取结果,并且假设您将V1的所有值存储在名为$row
的变量中。
您可以遍历该行并获取所有值不为0的键。
$confirmedColumns = [];
foreach($row as $column => $value){
if($value == 1) {
// []= means "append to array", similar to how += appends to strings
$confirmedColumns[]= $column;
}
}
print_r($confirmedColumns);