mysql - 选择任何特定行具有固定值的列名称

标签 mysql sql

我正在尝试在 mysql 中进行查询以获取某一特定行具有特定值的任何列。 在 Mysql 中,我们可以根据列的任何特定值获取行。

我有一个像这样的表:

+----+------------+------------+---------------+---------------+---------+----------------+---------
| ID | MSISDN     | MissedCall | SponsoredCall | AdvanceCredit | ACvalue | SuitablePackId | AutoTimeStamp       |
+----+------------+------------+---------------+---------------+---------+----------------+---------------------+
|  1 | 9944994488 |          1 |             0 |             1 |       0 |              1 | 2014-09-18 10:42:55 |
|  4 | 9879877897 |          0 |             1 |             0 |       0 |              2 | 2014-09-18 10:42:55 |
+----+------------+------------+---------------+---------------+---------+----------------+---------------------+

我需要的是,当我根据 MSISDN 选择一行时,它应该返回值为固定的该行的所有列名称(例如 1)。

因此,在上表中,MSISDN = 9944994488 应该返回

MissedCall 
AdvanceCredit 
SuitablePackId 

我尝试过的是:

SELECT COLUMN_NAME as names 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'bi' 
AND TABLE_NAME = 'useranalysisresult'

这会返回表的列名称。 但如何获取具有特定值的列名。 感谢您提前提供帮助。

最佳答案

评论太长了。

SQL 查询返回一组固定的列。您无法根据行更改设置。您可以使用准备好的语句来做您想做的事情,尽管这看起来像是一种神秘的方法。

可以返回一个包含连接在一起的值的列。像这样的东西:

select concat_ws(',',
                 (case when MissedCall = 1 then 'Missed Call' end),
                 (case when SponsoredCall = 1 then 'Sponsored Call' end),
                 . . .
                )
from useranalysisresult;

这将在所设置的标志的单列中生成一个列表

关于mysql - 选择任何特定行具有固定值的列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25932995/

相关文章:

c# - 在 NHibernate 中设置超时过期

mysql - Mysql WorkBench - 目标数据库中的列数错误

php - 导出到 CSV 时要操作数据吗?

带有 varchar 参数的 SQL Server 存储过程返回错误的结果

mysql - 在 SQL 中创建表时出现语法错误

sql - 甲骨文日期序列?

php - 本地主机 : socket: mysqli_connect(): (HY000/2002): No such file or directory

java - 在 SOAPUI 中创建 JDBC 连接

mysql - 超过 3 个表过度使用 Inner Join

php - 如何在添加行时获取表列的值