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

Déconstruire les tables MySQL

<p>Je me demandais si je pouvais changer cette sortie en : </p> <pre class="brush:php;toolbar:false;">Base de données utilisateur Sélectionner Insérer Mettre à jour Supprimer Créer des références Modifier Supprimer ------------- -------- ------ ------ ------ - ----- ------ ---------- ------ -------- mysql.session performance_schema 1 0 0 0 0 0 0 0 mysql.sys sys 0 0 0 0 0 0 0 0</pre> <p>Cela devient comme ceci :</p> <pre class="brush:php;toolbar:false;">Privilèges des utilisateurs performance_schema sys ----- ---------- ------------------ --- mysql.session Sélectionnez 1 mysql.session Insérer 0 mysql.session Mise à jour 0 mysql.session Supprimer 0 mysql.session Créer 0 Références mysql.session 0 mysql.session Modifier 0 mysql.session Supprimer 0 mysql.sys Sélectionnez 0 mysql.sys Insérer 0 mysql.sys Mise à jour 0 mysql.sys Supprimer 0 mysql.sys Créer 0 Références mysql.sys 0 mysql.sys Modifier 0 mysql.sys Supprimer 0</pre> <p>L'instruction de requête que j'ai utilisée est : </p> <pre class="brush:php;toolbar:false;">SELECT DISTINCT UTILISATEUR "Utilisateur", db "Base de données", SI(Select_priv = 'Y', '1', '0') AS "Sélectionner", SI(Insert_priv = 'Y', '1', '0') AS "Insérer", IF(Update_priv = 'Y', '1', '0') AS "Mise à jour", IF(Delete_priv = 'Y', '1', '0') AS "Supprimer", SI (Create_priv = 'Y', '1', '0') AS "Créer", IF(References_priv = 'Y', '1', '0') AS "Références", SI(Alter_priv = 'Y', '1', '0') AS "Alter", IF(Drop_priv = 'Y', '1', '0') AS "Drop" DEPUIS mysql.db COMMANDÉ PAR UTILISATEUR, Db;≪/pre> <p>Toute aide serait grandement appréciée. Merci d'avance! </p>
P粉549986089P粉549986089418 Il y a quelques jours472

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

  • P粉481815897

    P粉4818158972023-08-30 16:00:12

    Voici un exemple de « unpivot » :

    (SELECT User AS Users, 'Select' AS Privileges, 1 AS PrivOrder, MAX(CASE db WHEN 'performance_schema' THEN Select_priv='Y' END) AS `performance_schema`, MAX(CASE db WHEN 'sys' THEN Select_priv='Y' END) AS `sys` FROM db GROUP BY User)
    UNION
    (SELECT User, 'Insert', 2, MAX(CASE db WHEN 'performance_schema' THEN Insert_priv='Y' END), MAX(CASE db WHEN 'sys' THEN Insert_priv='Y' END) FROM db GROUP BY User)
    UNION
    (SELECT User, 'Update', 3, MAX(CASE db WHEN 'performance_schema' THEN Update_priv='Y' END), MAX(CASE db WHEN 'sys' THEN Update_priv='Y' END) FROM db GROUP BY User)
    UNION
    (SELECT User, 'Delete', 4, MAX(CASE db WHEN 'performance_schema' THEN Delete_priv='Y' END), MAX(CASE db WHEN 'sys' THEN Delete_priv='Y' END) FROM db GROUP BY User)
    UNION
    (SELECT User, 'Create', 5, MAX(CASE db WHEN 'performance_schema' THEN Create_priv='Y' END), MAX(CASE db WHEN 'sys' THEN Create_priv='Y' END) FROM db GROUP BY User)
    ...
    ORDER BY Users, PrivOrder;

    Désolé, il n'existe aucun moyen de définir automatiquement des requêtes pivot ou non pour les colonnes par schéma en fonction des données trouvées par la requête. Les colonnes doivent être définies dans la requête avant que celle-ci ne commence à lire les données.

    répondre
    0
  • Annulerrépondre