我正在尝试在 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粉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;
这将在所设置的标志的单列中生成一个列表。