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

我正在尝试在 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;

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板