Joins für JSON-Felder in MySQL ausführen
Frage:
In einer Datenbank mit einem JSON-Feld, in dem eine Liste von IDs gespeichert ist. Ist es möglich, SQL-Operationen für dieses Feld auszuführen und sie zum Verknüpfen mit einer anderen Tabelle zu verwenden?
Beispiel:
Bedenken Sie Folgendes Tabellen:
<code class="sql">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) );</code>
Wir möchten eine Abfrage erstellen, die die folgenden Ergebnisse zurückgibt:
user_id | user_name | user_group_id | group_name| ------------------------------------------------- 101 | John | 1 | Group A 101 | John | 3 | Group C
Wo user_groups die Liste [1, 3] speichert, die Gruppen-IDs darstellt.
Antwort:
Ja, es ist möglich, Verknüpfungen für JSON-Felder in MySQL durchzuführen. Mit der Funktion JSON_CONTAINS können wir prüfen, ob ein JSON-Wert einen bestimmten Wert enthält:
<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>
In dieser Abfrage prüft JSON_CONTAINS, ob das Feld user_groups den Wert user_group_id enthält. Wenn ja, wird die Zeile in die Ergebnismenge aufgenommen. Der $-Operator in dieser Funktion gibt an, dass an einer beliebigen Stelle im Array nach dem angegebenen Wert gesucht werden soll.
Mit dieser Technik können Sie Verknüpfungen für JSON-Felder durchführen und relevante Daten aus verschachtelten Strukturen extrahieren.
Das obige ist der detaillierte Inhalt vonKönnen Sie Tabellen basierend auf in JSON-Feldern in MySQL gespeicherten Daten verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!