Jadual Kandungan
Kata Pengantar
Instance
Rumah pangkalan data tutorial mysql Penggunaan asas mysql left join dan perbezaan antara on dan where

Penggunaan asas mysql left join dan perbezaan antara on dan where

Jun 02, 2023 pm 11:54 PM
mysql where left join

Kata Pengantar

Apabila kami menulis pernyataan SQL, kami tidak boleh mengelak daripada menggunakan kata kunci sambungan, seperti sambungan dalam dan sambungan luar. Terdapat banyak jenis. Saya akan menyiarkan di sini gambar yang saya temui di tempat lain:

Penggunaan asas mysql left join dan perbezaan antara on dan where

Saya rasa gambar ini sangat terperinci Ia menunjukkan penyataan SQL sertai dalam artikel ini sebagai contoh, ditakrifkan dalam talian seperti berikut: Kata kunci LEFT JOIN akan mengembalikan semua baris dari jadual kiri, walaupun tiada baris yang sepadan dalam jadual kanan.

Sebenarnya, secara literal, left join agak mudah difahami, tetapi masih terdapat beberapa masalah semasa penggunaan, seperti keadaan selepas dan selepas di mana, Hasilnya adalah berbeza akan belajar tentang cantuman kiri dari cetek ke dalam.

Instance

CREATE TABLE `class` (
  `class_id` int NOT NULL,
  `class_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `class_grade` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`class_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT;
Salin selepas log masuk

jadual skor:

CREATE TABLE `score` (
  `class_id` int NOT NULL,
  `stu_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `score` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT;
Salin selepas log masuk

Masing-masing mempunyai data:

Penggunaan asas mysql left join dan perbezaan antara on dan where

Penggunaan asas mysql left join dan perbezaan antara on dan where

S1: pilih c.class_id,c.class_name,c.class_grade,s.stu_id,s.skor daripada kelas c kiri sertai markah s pada c.class_id=s.class_id.

Ayat ini boleh ditulis semula sebagai: Kami menganalisis pernyataan ini Jadual kiri ialah jadual kelas, jadual kanan ialah jadual skor, dan medan berkaitannya ialah class_id. Apabila class_id dalam jadual kiri ialah 1, terdapat dua rekod dalam jadual kanan dengan class_id 1 apabila class_id dalam jadual kiri ialah 2, class_id dalam dua rekod dalam jadual kanan ialah 2; jadual kiri ialah 3, terdapat satu rekod dalam jadual kanan Kelas_id rekod ialah 3, jadi kita harus mendapat lima rekod:

1	语文	A	A002	82
1	语文	A	A001	91
2	数学	B	A002	87
2	数学	B	A001	95
3	英语	C	B003	65
Salin selepas log masuk

S2: pilih c.class_id,c.class_name,c.class_grade, s.stu_id,s.skor dari kelas c meninggalkan skor s pada c.class_id=s.class_id dan s.skor=90.
Berdasarkan contoh soalan pertama, yang ini mempunyai syarat tambahan s.skor=90 Ini bermakna medan skor skor jadual yang betul ialah 90, tetapi apabila kita melihat data dalam jadual, kita dapati tiada markah 90 dalam jadual yang betul , ok, adakah keputusan itu kosong? Lagipun, jadual di sebelah kanan tidak mempunyai data yang memenuhi syarat.

Malah, jika anda melaksanakan pernyataan SQL ini, anda akhirnya akan mendapat keputusan, tetapi anda hanya akan mendapat tiga keping data Semua medan dalam jadual kiri dipaparkan, dan semua medan dalam jadual kanan adalah kosong. Ini kerana tiada rekod dalam jadual kanan dengan skor 90, jadi medan dalam jadual kanan kosong.

On menapis data dahulu dan kemudian menyambungkannya, manakala tempat menapis data selepas melakukan pertanyaan berkaitan antara kedua-dua jadual Perbezaan antara on dan where adalah di sini, dan contoh berikut juga akan merangkumi perkara ini dua adalah berbeza.

1	语文	A		
2	数学	B		
3	英语	C
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

S3: pilih c.class_id,c.class_name,c.class_grade,s.stu_id,s.skor dari kelas c meninggalkan skor s pada c.class_id=s.class_id di mana c.class_name=&lsquo ;Bahasa Cina’ dan s.skor=90.

Anda perlu memberi perhatian kepada perbezaan antara where dan on, kerana pernyataan ini melibatkan kata kunci where. Hasil pertanyaan sql ini kosong Ini kerana kedua-dua jadual disambungkan untuk menanyakan keputusan terlebih dahulu, dan kemudian ditapis Hasil daripada pertanyaan jadual yang disambungkan ialah tiada rekod padanan class_name=‘中文’ , dan skor=90, jadi Hasil pertanyaan kosong.

S4: pilih c.class_id,c.class_name,c.class_grade,s.stu_id,s.skor daripada kelas c kiri sertai markah s pada c.class_id=s.class_id dan 1=0.

Kami kadangkala menambah 1=1 selepas keadaan di mana SQL, dan 1=0 di sini bermakna perkaitan antara kedua-dua jadual telah gagal, jadi hasilnya hanya akan memaparkan data dari jadual kiri.

1	语文	A	null	null
2	数学	B	null	null
3	英语	C	null	null
Salin selepas log masuk
Salin selepas log masuk

S5: pilih c.class_id,c.class_name,c.class_grade,s.stu_id,s.skor daripada kelas c meninggalkan markah sertai s pada 1=0.

Hasil pelaksanaan ini adalah sama seperti pernyataan SQL di atas Malah, semua kandungan jadual kiri dipaparkan.

1	语文	A	null	null
2	数学	B	null	null
3	英语	C	null	null
Salin selepas log masuk
Salin selepas log masuk

S6: pilih c.class_id,c.class_name,c.class_grade,s.stu_id,s.skor daripada kelas c meninggalkan skor s pada c.class_id=s.class_id dan c.class_name=&lsquo "Cina".

Ini memerlukan menapis rekod dengan class_name sebagai bahasa dalam jadual kanan Terdapat dua rekod, dan kemudian menyambungkan dua rekod dalam jadual sebelah kiri.

1	语文	A	A002	82
1	语文	A	A001	91
2	数学	B	null	null
3	英语	C	null	null
Salin selepas log masuk

S7: pilih c.class_id,c.class_name,c.class_grade,s.stu_id,s.skor daripada kelas c meninggalkan markah sertai s pada c.class_id=s.class_id dan c.class_name=&lsquo ;Bahasa Inggeris’.

Analisis soalan yang sama seperti yang sebelumnya (hasil di kawasan kosong adalah batal):

1	语文	A		
2	数学	B		
3	英语	C	B003	65
Salin selepas log masuk

S8: pilih c.class_id,c.class_name,c.class_grade,s.stu_id ,s.skor daripada kelas c meninggalkan sertai markah s pada c.class_id=s.class_id dan c.class_name=‘体育’.

Tiada data dalam jadual kanan dan nama_kelas adalah sukan, jadi jadual kanan kosong dan semua data dalam jadual kiri dipaparkan Medan yang sepadan dalam jadual kanan kosong:

1	语文	A		
2	数学	B		
3	英语	C
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

S9: pilih c .class_id,c.class_name,c.class_grade,s.stu_id,s.skor dari kelas c kiri sertai markah s pada c.class_id=s.class_id dan c.class_name=‘中文&rsquo ; dan s.skor=91.

右表中只有一条记录的score为91,所以需要拿左表与右表的这一条数据进行关联,左表只有语文可以与右表的那一条数据对上,所以结果为:

1	语文	A	A001	91
2	数学	B		
3	英语	C
Salin selepas log masuk

Q10:select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id and c.class_name=‘体育’ and s.score=90。

右表中没有数据的score为90,同样左表中也没有class_name为体育,但是这并不意味着最后的结果就是空了,只要没有where条件,最终的结果数量最起码也会是左表中原先的数据数量,所以这条sql会返回左表的全部数据。

1	语文	A		
2	数学	B		
3	英语	C
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Q11:select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id where c.class_name=‘英语’。

需要注意的点:条件是在where中的,也就是在表关联之后,再进行过滤的,所以最终的结果只会有一条:

3	英语	C	B003	65
Salin selepas log masuk

Q12:select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id where s.score=91。

和上面一样,是在连表查询之后,找出score=90的数据:

1	语文	A	A001	91
Salin selepas log masuk
Salin selepas log masuk

Q12;select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id where c.class_name=‘语文’ and s.score=91。

我们将两表连接查询后,找出结果中class_name为语文,score为91的记录,只有一条:

1	语文	A	A001	91
Salin selepas log masuk
Salin selepas log masuk

Atas ialah kandungan terperinci Penggunaan asas mysql left join dan perbezaan antara on dan where. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MySQL: Kemudahan Pengurusan Data untuk Pemula MySQL: Kemudahan Pengurusan Data untuk Pemula Apr 09, 2025 am 12:07 AM

MySQL sesuai untuk pemula kerana mudah dipasang, kuat dan mudah untuk menguruskan data. 1. Pemasangan dan konfigurasi mudah, sesuai untuk pelbagai sistem operasi. 2. Menyokong operasi asas seperti membuat pangkalan data dan jadual, memasukkan, menanyakan, mengemas kini dan memadam data. 3. Menyediakan fungsi lanjutan seperti menyertai operasi dan subqueries. 4. Prestasi boleh ditingkatkan melalui pengindeksan, pengoptimuman pertanyaan dan pembahagian jadual. 5. Sokongan sokongan, pemulihan dan langkah keselamatan untuk memastikan keselamatan data dan konsistensi.

Bolehkah saya mengambil kata laluan pangkalan data di Navicat? Bolehkah saya mengambil kata laluan pangkalan data di Navicat? Apr 08, 2025 pm 09:51 PM

Navicat sendiri tidak menyimpan kata laluan pangkalan data, dan hanya boleh mengambil kata laluan yang disulitkan. Penyelesaian: 1. Periksa Pengurus Kata Laluan; 2. Semak fungsi "Ingat Kata Laluan" Navicat; 3. Tetapkan semula kata laluan pangkalan data; 4. Hubungi pentadbir pangkalan data.

Cara Membuat Premium Navicat Cara Membuat Premium Navicat Apr 09, 2025 am 07:09 AM

Buat pangkalan data menggunakan Navicat Premium: Sambungkan ke pelayan pangkalan data dan masukkan parameter sambungan. Klik kanan pada pelayan dan pilih Buat Pangkalan Data. Masukkan nama pangkalan data baru dan set aksara yang ditentukan dan pengumpulan. Sambung ke pangkalan data baru dan buat jadual dalam penyemak imbas objek. Klik kanan di atas meja dan pilih masukkan data untuk memasukkan data.

Bagaimana untuk melihat kata laluan pangkalan data di Navicat untuk MariaDB? Bagaimana untuk melihat kata laluan pangkalan data di Navicat untuk MariaDB? Apr 08, 2025 pm 09:18 PM

Navicat untuk MariaDB tidak dapat melihat kata laluan pangkalan data secara langsung kerana kata laluan disimpan dalam bentuk yang disulitkan. Untuk memastikan keselamatan pangkalan data, terdapat tiga cara untuk menetapkan semula kata laluan anda: Tetapkan semula kata laluan anda melalui Navicat dan tetapkan kata laluan yang kompleks. Lihat fail konfigurasi (tidak disyorkan, risiko tinggi). Gunakan alat baris perintah sistem (tidak disyorkan, anda perlu mahir dalam alat baris arahan).

Mysql: Konsep mudah untuk pembelajaran mudah Mysql: Konsep mudah untuk pembelajaran mudah Apr 10, 2025 am 09:29 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

Cara Melaksanakan SQL di Navicat Cara Melaksanakan SQL di Navicat Apr 08, 2025 pm 11:42 PM

Langkah -langkah untuk melaksanakan SQL di Navicat: Sambungkan ke pangkalan data. Buat tetingkap editor SQL. Tulis pertanyaan SQL atau skrip. Klik butang Run untuk melaksanakan pertanyaan atau skrip. Lihat hasilnya (jika pertanyaan dilaksanakan).

Cara Membuat Sambungan Baru ke MySQL di Navicat Cara Membuat Sambungan Baru ke MySQL di Navicat Apr 09, 2025 am 07:21 AM

Anda boleh membuat sambungan MySQL baru di Navicat dengan mengikuti langkah -langkah: Buka aplikasi dan pilih Sambungan Baru (Ctrl N). Pilih "MySQL" sebagai jenis sambungan. Masukkan nama host/alamat IP, port, nama pengguna, dan kata laluan. (Pilihan) Konfigurasikan pilihan lanjutan. Simpan sambungan dan masukkan nama sambungan.

Navicat tidak dapat menyambung ke MySQL/MariaDB/PostgreSQL dan pangkalan data lain Navicat tidak dapat menyambung ke MySQL/MariaDB/PostgreSQL dan pangkalan data lain Apr 08, 2025 pm 11:00 PM

Alasan Biasa Mengapa Navicat tidak dapat menyambung ke pangkalan data dan penyelesaiannya: 1. Periksa status berjalan pelayan; 2. Periksa maklumat sambungan; 3. Laraskan tetapan firewall; 4. Konfigurasi akses jauh; 5. menyelesaikan masalah rangkaian; 6. Periksa keizinan; 7. Memastikan keserasian versi; 8. menyelesaikan masalah lain.

See all articles