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!