[英]fetching multiple MySQL rows based on a specific input within one of the table columns
[英]Fetching the columns of a MySQL table based on the values of the column
我正在尝试检索以下格式的表的列名:
id | error 1 | error 2 | error 3 | error 4 |
--------------------------------------------
1 | 1 | 0 | 0 | 1 |
-------------------------------------------
2 | 0 | 0 | 0 | 0 |
我需要检索值为1的列名。不是执行“从表中的id ='someid'中选择*”然后过滤掉,有没有办法直接从查询中击中列名?
虽然这会好得多只是做普通的SQL查询,然后在你的PHP代码处理数据,您可以使用CASE
这里条款得到它在SQL完成:
SELECT id,
( CASE WHEN `error 1` = 1 THEN 'error 1' END ),
( CASE WHEN `error 2` = 1 THEN 'error 2' END ),
( CASE WHEN `error 3` = 1 THEN 'error 3' END ),
( CASE WHEN `error 4` = 1 THEN 'error 4' END )
FROM your_table
SELECT id, CONCAT_WS(',',t2.e1,t2.e2,t2.e3,t2.e4) as err FROM table1
INNER JOIN (
SELECT id,
CASE WHEN `error 1`= 1 THEN 'error 1' ELSE NULL END AS e1,
CASE WHEN `error 2`= 1 THEN 'error 2' ELSE NULL END AS e2,
CASE WHEN `error 3`= 1 THEN 'error 3' ELSE NULL END AS e3,
CASE WHEN `error 4`= 1 THEN 'error 4' ELSE NULL END AS e4
FROM table1
) as t2
on table1.id=t2.id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.