2014-09-19 54 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'; 
相關問題