2014-09-19 66 views
0

我想在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' 

这将返回我的表的列名。 但是如何获得具有特定值的列名称。 感谢您的帮助。

+0

这是你努力实现什么? http://stackoverflow.com/questions/15507683/how-to-select-column-names-dynamically-in-mysql – hgulyan 2014-09-19 11:37:03

回答

0

这是太长的评论。

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

可能返回单个值,并将值连接在一起。喜欢的东西:

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

这将在标志中的一列产生列表被设置。

0

尝试下面的一个。这里有你的实际的表名称替换YOUR_SCHEMA与您的实际架构名称和YOUR_TABLENAME

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