Heim > Datenbank > MySQL-Tutorial > Wie können Sie MySQL-Tabellen basierend auf Daten in einem JSON-Feld verknüpfen?

Wie können Sie MySQL-Tabellen basierend auf Daten in einem JSON-Feld verknüpfen?

Barbara Streisand
Freigeben: 2024-10-30 15:04:03
Original
510 Leute haben es durchsucht

How can you join MySQL tables based on data within a JSON field?

Verwendung des MySQL-JSON-Felds für komplexe Tabellenverknüpfungen

Problem:

In einer MySQL-Datenbank Schema speichert ein JSON-Feld eine Liste von IDs. Das Ziel besteht darin, Operationen an diesem JSON-Feld durchzuführen und die Ergebnisse in einer SQL-Abfrage zu verwenden, um die Benutzertabelle mit einer Benutzergruppentabelle zu verbinden.

Beispielszenario:

Betrachten Sie die folgenden Tabellen:

CREATE TABLE user (
    user_id INT,
    user_name VARCHAR(50),
    user_groups JSON
);

CREATE TABLE user_group (
    user_group_id INT,
    group_name VARCHAR(50)
);
Nach dem Login kopieren

Mit den folgenden Daten:

INSERT INTO user_group (user_group_id, group_name) VALUES (1, 'Group A');
INSERT INTO user_group (user_group_id, group_name) VALUES (2, 'Group B');
INSERT INTO user_group (user_group_id, group_name) VALUES (3, 'Group C');

INSERT INTO user (user_id, user_name, user_groups) VALUES (101, 'John', '[1,3]');
Nach dem Login kopieren

Gewünschtes Ergebnis:

Das gewünschte Ergebnis ist eine Abfrage, die ruft die folgenden Daten ab:

user_id | user_name | user_group_id | group_name|
-------------------------------------------------
101     | John      | 1             | Group A
101     | John      | 3             | Group C
Nach dem Login kopieren

Lösung:

Die Lösung besteht darin, mit der Funktion JSON_CONTAINS zu prüfen, ob die Benutzergruppen-ID im JSON-Feld des Benutzers vorhanden ist Tabelle.

<code class="sql">SELECT 
       u.user_id, 
       u.user_name, 
       g.user_group_id,
       g.group_name
   FROM user u
   LEFT JOIN user_group g on JSON_CONTAINS(u.user_groups, CAST(g.user_group_id as JSON), '$')</code>
Nach dem Login kopieren

Hinweis:

Der $-Operator in der JSON_CONTAINS-Funktion stellt die Wurzel des JSON-Dokuments dar.

Das obige ist der detaillierte Inhalt vonWie können Sie MySQL-Tabellen basierend auf Daten in einem JSON-Feld verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage