Rumah  >  Artikel  >  pangkalan data  >  Bolehkah Anda Menyertai Jadual Berdasarkan Data yang Disimpan dalam Medan JSON dalam MySQL?

Bolehkah Anda Menyertai Jadual Berdasarkan Data yang Disimpan dalam Medan JSON dalam MySQL?

Barbara Streisand
Barbara Streisandasal
2024-10-31 07:54:02389semak imbas

Can You Join Tables Based on Data Stored in JSON Fields in MySQL?

Melaksanakan Gabungan pada Medan JSON dalam MySQL

Soalan:

Dalam pangkalan data dengan Medan JSON yang menyimpan senarai ID, adakah mungkin untuk melaksanakan operasi SQL pada medan ini dan menggunakannya untuk bergabung dengan jadual lain?

Contoh:

Pertimbangkan perkara berikut jadual:

<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>

Kami ingin membuat pertanyaan yang mengembalikan hasil berikut:

user_id | user_name | user_group_id | group_name|
-------------------------------------------------
101     | John      | 1             | Group A
101     | John      | 3             | Group C

Tempat pengguna_kumpulan menyimpan senarai [1, 3], mewakili ID kumpulan.

Jawapan:

Ya, adalah mungkin untuk melakukan gabungan pada medan JSON dalam MySQL. Menggunakan fungsi JSON_CONTAINS, kita boleh menyemak sama ada nilai JSON mengandungi nilai tertentu:

<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>

Dalam pertanyaan ini, JSON_CONTAINS menyemak sama ada medan user_groups mengandungi nilai user_group_id. Jika ya, ia termasuk baris dalam set hasil. Operator $ dalam fungsi ini menandakan bahawa ia harus mencari di mana-mana dalam tatasusunan untuk nilai yang ditentukan.

Teknik ini membolehkan anda melakukan gabungan pada medan JSON dan mengekstrak data yang berkaitan daripada struktur bersarang.

Atas ialah kandungan terperinci Bolehkah Anda Menyertai Jadual Berdasarkan Data yang Disimpan dalam Medan JSON dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn