我有一个包含8个字段/列的MySQL表。其中,5列具有0或1作为值。我想只显示特定ro的值为1的那些字段。
显而易见的方法是运行如下查询:
SELECT * FROM table WHERE field1=1 OR field2=1 OR field3=1 OR field4=1 OR field5=1 ;
这将产生一个结果集,其中包含满足条件的8个字段/列。
但我想尝试的是运行一个查询,该查询给出的结果集只包含值为1的字段。
有可能吗?
如果可能的话,我该怎么做?
答案 0 :(得分:0)
不幸的是,我不认为这是可能的。 如果您在阅读结果集时考虑它,您将拥有它 举例来说:
$row[0]
根据您尝试做的事情,行与行之间会有所不同。
$row[0]
的结果将始终为1,但选中的列
因行而异,这对IMO来说非常困惑。
解决方案是更改表的设计并设置:
visibleField1, visibleField2, visibleField3, visibleField4, visibleField5
并在列中填写您要显示的字段的名称。
或为字段visibleFields
命名,并在显示这三个字段时填入"field1,field2,field5"
可能还有其他方法可以改变这种设计。
答案 1 :(得分:0)
你可以这样试试:
SELECT id,
CASE
WHEN field1 = 1 THEN 'badge_name'
WHEN field2 = 1 THEN 'other_badge_name'
...
END AS badge
FROM your_table
您可以在下面的链接中看到一个使用一些堆栈溢出徽章的示例: