Dekonstruieren Sie MySQL-Tabellen
P粉549986089
P粉549986089 2023-08-29 18:24:12
0
1
465
<p>Ich habe mich gefragt, ob ich diese Ausgabe ändern könnte in: </p> <pre class="brush:php;toolbar:false;">Benutzerdatenbank Wählen Sie Einfügen Aktualisieren Löschen Referenzen erstellen Ändern Löschen ------------- ---- ------ ------ ------ - ----- ------ ---------- ------ -------- 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>Es wird so:</p> <pre class="brush:php;toolbar:false;">Benutzerrechte performance_schema sys ----- ---------- ---- --- mysql.session Wählen Sie 1 mysql.session 0 einfügen mysql.session Update 0 mysql.session Löschen Sie 0 mysql.session Erstellen Sie 0 mysql.session-Referenzen 0 mysql.session Alter 0 mysql.session Drop 0 mysql.sys Wählen Sie 0 mysql.sys Fügen Sie 0 ein mysql.sys Update 0 mysql.sys Löschen Sie 0 mysql.sys Erstellen Sie 0 mysql.sys Referenzen 0 mysql.sys Alter 0 mysql.sys Drop 0</pre> <p>Die von mir verwendete Abfrageanweisung lautet: </p> <pre class="brush:php;toolbar:false;">SELECT UNTERSCHEIDBAR USER „Benutzer“, db „Datenbank“, IF(Select_priv = 'Y', '1 ', '0') AS "Select", IF(Insert_priv = 'Y', '1 ', '0') AS "Einfügen", IF(Update_priv = 'Y', '1', '0') AS "Update", IF(Delete_priv = 'Y', '1', '0') AS "Löschen", IF(Create_priv = 'Y', '1', '0') AS "Create", IF(References_priv = 'Y', '1', '0') AS "References", IF(Alter_priv = 'Y', '1', '0') AS "Alter", IF(Drop_priv = 'Y', '1', '0') AS "Drop" AUS mysql.db SORTIEREN NACH USER, Db;</pre> <p>Jede Hilfe wäre sehr dankbar. Vielen Dank im Voraus! </p>
P粉549986089
P粉549986089

Antworte allen(1)
P粉481815897

这是一个“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;

抱歉,无法自动根据查询找到的数据为每个模式定义列的透视或反透视查询。在查询开始读取数据之前,必须在查询中设置列。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!