Heim >Datenbank >MySQL-Tutorial >Wie können Sie MySQL-Tabellen basierend auf Daten in einem JSON-Feld verknüpfen?
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) );
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]');
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
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>
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!