我正在尝试在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的行时,它应该返回值为fix的那一行的所有列名(比如1)。
因此,在MSISDN = 9944994488的上表中,它应该返回
MissedCall
AdvanceCredit
SuitablePackId
我所尝试的是:
SELECT COLUMN_NAME as names
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'bi'
AND TABLE_NAME = 'useranalysisresult'
这会返回表的列名。 但是如何获取具有特定值的列名。 提前感谢您的帮助。
答案 0 :(得分:0)
评论太长了。
SQL查询返回一组固定的列。您无法根据行更改设置。你可以使用准备好的声明做你想做的事,虽然这看起来像是一种神秘的方法。
您可以返回单个列,其中值连接在一起。类似的东西:
select concat_ws(',',
(case when MissedCall = 1 then 'Missed Call' end),
(case when SponsoredCall = 1 then 'Sponsored Call' end),
. . .
)
from useranalysisresult;
这将在正在设置的标志的单个列中生成列表。
答案 1 :(得分:0)
尝试以下方法。此处将YOUR_SCHEMA
替换为您的实际架构名称,将YOUR_TABLENAME
替换为您的实际表名称:
select column_name from information_schema.columns
where YOUR_SCHEMA = //any condition
and table_name='YOUR_TABLENAME';