Bagaimana untuk menyahsarang dan meratakan data dalam MySQL?

WBOY
Lepaskan: 2023-08-02 08:25:08
asal
1738 orang telah melayarinya

MySQL ialah sistem pengurusan pangkalan data hubungan kuat yang biasa digunakan untuk menyimpan dan mengurus sejumlah besar data. Dalam aplikasi praktikal, kami sering menghadapi situasi di mana data perlu bersarang dan diratakan. Artikel ini akan memperkenalkan cara menggunakan MySQL untuk mengetatkan dan meratakan data, dan memberikan contoh kod yang sepadan.

1. Pemprosesan data bersarang

Dalam beberapa senario, kita perlu menukar struktur data bersarang kepada struktur rata untuk pertanyaan dan analisis yang lebih mudah. Berikut ialah beberapa cara biasa untuk menangani struktur data bersarang.

  1. Menggunakan pertanyaan sertai

Pertanyaan sertai ialah salah satu cara paling biasa untuk mengendalikan data bersarang. Tukar data bersarang kepada hasil rata dengan menyertai jadual yang sama atau jadual yang berbeza beberapa kali.

SELECT
    a.id,
    b.name AS category,
    c.name AS product
FROM
    table_a a
LEFT JOIN table_b b ON a.category_id = b.id
LEFT JOIN table_c c ON a.product_id = c.id;
Salin selepas log masuk

Dalam contoh di atas, melalui berbilang pertanyaan sambungan, category_id dan product_id dalam jadual a dikaitkan dengan id dalam jadual b dan jadual c, dan hasil yang rata diperolehi.

  1. Gunakan self-join

Self-join merujuk kepada kaedah menyambungkan jadual itu sendiri dengan jadual lain untuk pertanyaan. Melalui penyertaan sendiri, kami boleh mengendalikan beberapa struktur data bersarang.

SELECT
    a.id,
    a.name AS parent_name,
    b.name AS child_name
FROM
    table_a a
LEFT JOIN table_a b ON a.id = b.parent_id;
Salin selepas log masuk

Dalam contoh di atas, jadual a melakukan pertanyaan sambungan dengan dirinya sendiri, mengaitkan parent_id dengan id dan memperoleh hasil yang rata.

2. Meratakan data

Dalam beberapa senario, kita perlu menukar struktur data rata kepada struktur bersarang untuk penyimpanan dan paparan yang lebih mudah. Berikut adalah beberapa kaedah biasa untuk memproses struktur data rata.

  1. Menggunakan subkueri

Dengan menggunakan subkueri, kami boleh menukar data rata kepada struktur data bersarang.

SELECT
    id,
    name,
    (
        SELECT
            GROUP_CONCAT(product_name)
        FROM
            table_b
        WHERE
            table_b.id = table_a.id
    ) AS products
FROM
    table_a;
Salin selepas log masuk

Dalam contoh di atas, id dalam jadual a dikaitkan dengan id dalam jadual b melalui subkueri, dan GROUP_CONCAT digunakan untuk menggabungkan berbilang nama_produk ke dalam satu medan.

  1. Gunakan ungkapan CASE

Ekspresi CASE boleh mengembalikan hasil yang berbeza mengikut syarat Dengan menggunakan ungkapan CASE, kami boleh menukar data rata kepada struktur data bersarang.

SELECT
    id,
    name,
    CASE
        WHEN category_id = 1 THEN 'Category A'
        WHEN category_id = 2 THEN 'Category B'
        ELSE 'Other'
    END AS category
FROM
    table_a;
Salin selepas log masuk

Dalam contoh di atas, nama kategori yang berbeza dikembalikan mengikut kategori_id yang berbeza melalui ungkapan CASE. Ringkasan Kaedah ini boleh membantu kami membuat pertanyaan, menganalisis dan memaparkan data dengan lebih mudah serta meningkatkan kecekapan dan fleksibiliti pemprosesan data.

Walaupun artikel ini menyediakan beberapa kaedah dan contoh biasa, kaedah pemprosesan sebenar mungkin berbeza-beza bergantung pada struktur dan keperluan data tertentu. Dalam aplikasi praktikal, kita harus memilih kaedah yang paling sesuai untuk pemprosesan data mengikut situasi tertentu.

Saya harap artikel ini akan membantu anda memahami penyahtan dan perataan data dalam MySQL Jika anda mempunyai sebarang pertanyaan, sila tinggalkan mesej untuk perbincangan.

Atas ialah kandungan terperinci Bagaimana untuk menyahsarang dan meratakan data 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan