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

Barbara Streisand
Lepaskan: 2024-10-31 07:54:02
asal
387 orang telah melayarinya

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>
Salin selepas log masuk

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
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!