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

时间:2014-09-19 11:33:45

标签: 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的行时,它应该返回值为fix的那一行的所有列名(比如1)。

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

MissedCall 
AdvanceCredit 
SuitablePackId 

我所尝试的是:

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

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

2 个答案:

答案 0 :(得分:0)

评论太长了。

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

可以返回单个列,其中值连接在一起。类似的东西:

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

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

答案 1 :(得分:0)

尝试以下方法。此处将YOUR_SCHEMA替换为您的实际架构名称,将YOUR_TABLENAME替换为您的实际表名称:

select column_name from information_schema.columns  
where  YOUR_SCHEMA = //any condition 
and  table_name='YOUR_TABLENAME';