Maison  >  Questions et réponses  >  le corps du texte

Identifiez les noms de colonnes avec des valeurs cohérentes pour une ligne spécifique

J'essaie de faire une requête dans MySQL pour obtenir n'importe quelle colonne ayant une valeur spécifique pour une ligne spécifique. Dans MySQL, nous pouvons obtenir des lignes basées sur n'importe quelle valeur spécifique d'une colonne.

J'ai une table comme celle-ci :

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

Ce dont j'ai besoin, c'est que lorsque je sélectionne une ligne basée sur MSISDN, elle renvoie tous les noms de colonnes de cette ligne avec une valeur fixe (par exemple 1).

Donc, dans le tableau ci-dessus, MSISDN = 9944994488 devrait revenir

MissedCall 
AdvanceCredit 
SuitablePackId

Ce que j'ai essayé, c'est :

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

Cela renvoie les noms de colonnes de la table. Mais comment obtenir le nom de la colonne avec une valeur spécifique. Merci d'avance pour votre aide.

P粉738046172P粉738046172313 Il y a quelques jours344

répondre à tous(1)je répondrai

  • P粉765570115

    P粉7655701152023-12-12 00:03:09

    Le commentaire est trop long.

    Les requêtes SQL renvoient un ensemble fixe de colonnes. Vous ne pouvez pas modifier les paramètres par ligne. Vous pouvez utiliser des instructions préparées pour faire ce que vous voulez, même si cela peut sembler une approche mystérieuse.

    Vous pouvez renvoyer une colonne contenant des valeurs concaténées entre elles. Quelque chose comme ça :

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

    Cela générera une list dans une seule colonne des drapeaux définis.

    répondre
    0
  • Annulerrépondre