識別特定行具有一致值的列名
P粉738046172
P粉738046172 2023-12-11 09:56:34
0
1
381

我正在嘗試在 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粉738046172
P粉738046172

全部回覆(1)
P粉765570115

評論太長了。

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

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

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板