Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menyelesaikan masalah pertindihan dalam mysql menggunakan sambungan sambungan kiri

Bagaimana untuk menyelesaikan masalah pertindihan dalam mysql menggunakan sambungan sambungan kiri

王林
王林ke hadapan
2023-06-02 13:13:412838semak imbas

    Penduaan berlaku apabila mysql menggunakan sambungan left join

    Penerangan masalah

    Apabila menggunakan pertanyaan join, contohnya, jadual A ialah yang utama jadual , sambungan kiri ke jadual B. Apa yang kami jangkakan ialah hasil pertanyaan akan mempunyai rekod sebanyak yang terdapat dalam jadual A. Walau bagaimanapun, mungkin terdapat keputusan bahawa jumlah rekod yang ditanya adalah lebih daripada jumlah rekod. dalam jadual A. , dan apabila hasil pertanyaan dipaparkan, beberapa lajur diulang secara ringkas, produk Cartesan dijana.

    Contoh masalah

    Jadual A ialah jadual pengguna (pengguna), dan medannya ialah:

    ID pengguna nama ID
    1 aaaa 10001
    2 bbbb 10002
    3 ccccc 10003

    Jadual B ialah jenis jadual produk (produk) pertama dan medannya ialah:

    ID pengguna masa tajuk ID
    1 Tajuk 1 2014-01-01 10002
    2 Tajuk 2 2014-01-01 10002
    3 Tajuk 3 2014-01-01 10001
    4 Tajuk 4 🎜>4 Tajuk 4 0-2018 >5 Tajuk 5 2018-03-20 10003

    Pada masa ini, apabila kami menggunakan sql berikut untuk melaksanakan, kami mendapati bahawa hasil pelaksanaan

    selecct * from user left join product on user.userid=product.userid;

    Bagaimana untuk menyelesaikan masalah pertindihan dalam mysql menggunakan sambungan sambungan kiri

    sebenarnya lebih tinggi daripada jumlah rekod dalam jadual pengguna Banyak

    Masalah Selesai

    Malah, masalah ini boleh dilihat oleh orang yang arif sepintas lalu, kerana kata kunci sertaan kiri tidak unik dalam jadual produk, jadi bahagian data bukan unik ini menghasilkan produk Cartesian , menghasilkan lebih banyak hasil pelaksanaan daripada yang dijangkakan.

    Penyelesaian adalah dengan menggunakan kekunci unik untuk mengaitkan dan melakukan pertanyaan pautan

    Apabila mysql menggunakan left join, data jadual kanan mempunyai data pendua

    LEFT JOIN keyword akan Mengembalikan semua baris dari jadual kiri (nama_jadual1), walaupun tiada baris yang sepadan dalam jadual kanan (nama_jadual2). Pada masa ini, tiada masalah jika jadual yang betul (table_name2) tidak mempunyai data atau hanya satu keping data selepas ditapis oleh kata kunci on.

    Apa yang saya ingin katakan ialah apa yang perlu dilakukan sekiranya terdapat data pendua (penduaan lengkap dalam perniagaan) dalam jadual yang betul (nama_jadual2).

    Apabila data pendua muncul dalam jadual kanan (nama_jadual2) selepas ditapis oleh kata kunci on, data yang ditemui pada masa ini ialah: data jadual kanan * data pendua + data bersyarat lain dalam jadual kanan, dan apa yang kita perlukan Bilangan item data adalah berbeza.

    Penyelesaian saya ialah dengan terlebih dahulu menanyakan jadual yang betul (nama_jadual2) mengikut kumpulan medan penapis, menapis data yang sama, dan kemudian menganggap hasilnya sebagai jadual yang sesuai untuk perkaitan

    前面脑补 
    LEFT JOIN (SELECT MODEL_CODE,MODEL_NAME from tm_model GROUP BY MODEL_CODE) tm on tav.model_code = tm.MODEL_CODE 
    后面脑补

    Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah pertindihan dalam mysql menggunakan sambungan sambungan kiri. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam