搜尋

首頁  >  問答  >  主體

識別特定行具有一致值的列名

我正在嘗試在 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'

這會傳回表格的列名稱。 但如何取得具有特定值的列名。 感謝您提前提供協助。

P粉738046172P粉738046172406 天前411

全部回覆(1)我來回復

  • P粉765570115

    P粉7655701152023-12-12 00:03:09

    評論太長了。

    SQL 查詢傳回一組固定的列。您無法根據行更改設定。您可以使用準備好的語句來做您想做的事情,儘管這看起來像是一種神秘的方法。

    可以傳回一個包含連接在一起的值的欄位。像這樣的東西:

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

    這將在所設定的標誌的單列中產生一個清單

    回覆
    0
  • 取消回覆