Heim  >  Fragen und Antworten  >  Hauptteil

Identifizieren Sie Spaltennamen mit konsistenten Werten für eine bestimmte Zeile

Ich versuche, eine Abfrage in MySQL durchzuführen, um eine beliebige Spalte abzurufen, die einen bestimmten Wert für eine bestimmte Zeile hat. In MySQL können wir Zeilen basierend auf einem bestimmten Wert einer Spalte abrufen.

Ich habe einen Tisch wie diesen:

+----+------------+------------+---------------+---------------+---------+----------------+---------
| 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 |
+----+------------+------------+---------------+---------------+---------+----------------+---------------------+

Was ich brauche ist, dass, wenn ich eine Zeile basierend auf MSISDN auswähle, alle Spaltennamen dieser Zeile mit einem festen Wert (z. B. 1) zurückgegeben werden.

In der obigen Tabelle sollte also MSISDN = 9944994488 zurückgegeben werden

MissedCall 
AdvanceCredit 
SuitablePackId

Was ich versucht habe ist:

SELECT COLUMN_NAME as names 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'bi' 
AND TABLE_NAME = 'useranalysisresult'

Dies gibt die Spaltennamen der Tabelle zurück. Aber wie bekomme ich einen Spaltennamen mit einem bestimmten Wert? Danke im Vorraus für deine Hilfe.

P粉738046172P粉738046172313 Tage vor346

Antworte allen(1)Ich werde antworten

  • 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;

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

    Antwort
    0
  • StornierenAntwort