Aus Sicherheitsgründen können Sie die Rails-Konsole möglicherweise nicht in der Produktion verwenden. Bei der Untersuchung der zu diesem Zeitpunkt registrierten Daten denke ich, dass Sie Redash usw. mit SQL aus dem BI Tool untersuchen können. Ich werde zusammenfassen, wie die Aufzählung zu diesem Zeitpunkt auf leicht lesbare Weise angezeigt wird.
Die Rolle wird in enum wie folgt definiert:
enum role: { user: 1, admin: 9 }
Ich werde die Daten so untersuchen.
name | role |
---|---|
test_1 | 1 |
test_2 | 1 |
admin_1 | 9 |
admin_2 | 9 |
Verwenden Sie Unterabfragen, ohne sich Gedanken über die Geschwindigkeit machen zu müssen, da es sich um SQL für Untersuchungen handelt.
SELECT td.name, td.role, enum_code.name
FROM test_data AS td
JOIN
(
SELECT 'user' AS name, 0 AS code UNION ALL
SELECT 'admin' AS name, 9 AS code
) AS enum_code
ON td.role = enum_code.code;
Sie sollten den Rollennamen mit folgendem Ergebnis sehen:
name | role | role_name |
---|---|---|
test_1 | 0 | user |
test_2 | 0 | user |
admin_1 | 9 | admin |
admin_2 | 9 | admin |
Das Folgende ist eine Seite, aber ich möchte zusätzliche Informationen erklären.
SELECT 'user' AS name, 0 AS code
Sie können eine solche temporäre Tabelle erstellen, indem Sie ausführen.
name | code |
---|---|
user | 0 |
Ich habe mehrere Zeilen erstellt und sie Zeile für Zeile mit "UNION ALL" verbunden.
name | code |
---|---|
user | 0 |
admin | 9 |
Dann wird JOIN nach Spalten verbunden.
name | role | role_name |
---|---|---|
test_1 | 0 | user |
test_2 | 0 | user |
admin_1 | 9 | admin |
admin_2 | 9 | admin |
https://oss-db.jp/dojo/dojo_09
In MySQL und PostgreSQL können Sie SQL-Anweisungen ohne FROM schreiben. Da FROM in Oracle und DB2 nicht weggelassen werden kann, verwenden Sie "FROM dual".
SELECT 'user' AS name, 0 AS code FROM dual;
https://docs.oracle.com/cd/E16338_01/server.112/b56299/queries009.htm https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.1.0/com.ibm.db2.luw.apdv.porting.doc/doc/r0052874.html
Da PostgreSQL die with-Klausel verwenden kann, können Sie zuerst eine temporäre Tabelle schreiben. Diese Schreibmethode wird beim Erstellen einer Abfrage für die Aggregation verwendet, da die Verarbeitung in der Reihenfolge von oben verfolgt werden kann. Im Fall von MySQL scheint es, dass es ab 8.0 verwendet werden kann.
WITH enum_code AS (
SELECT 'user' AS name, 0 AS code UNION ALL
SELECT 'admin' AS name, 9 AS code
)
SELECT td.name, td.role, enum_code.name AS role_name
FROM test_data AS td
JOIN enum_code
ON td.role = enum_code.code;
https://www.postgresql.jp/document/12/html/queries-with.html https://dev.mysql.com/doc/refman/8.0/en/with.html