Sambungan dalaman juga dipanggil sambungan dan merupakan jenis sambungan yang terawal. Juga dikenali sebagai cantuman biasa atau cantuman semula jadi, cantuman dalaman memadamkan semua baris daripada jadual hasil yang tidak sepadan dengan baris dalam jadual cantuman lain, jadi maklumat mungkin hilang dalam cantuman dalaman.
Gunakan kata kunci INNER JOIN dalam klausa MySQL FROM untuk menyertai dua jadual, dan gunakan klausa ON untuk menetapkan syarat sambungan. Secara sintaksis, INNER JOIN dan CROSS JOIN boleh ditukar tanpa sebarang syarat.
SELECT FROM INNER JOIN [ ON子句]
: Nama lajur yang akan diambil.
: Nama jadual kedua-dua jadual untuk sambungan dalaman.
Selepas klausa FROM, anda boleh meninggalkan kata kunci INNER dan menggunakan kata kunci JOIN secara langsung, kerana inner join ialah kaedah sambungan jadual lalai sistem. Selepas menggunakan cantuman dalam, syarat untuk menyertai jadual boleh ditetapkan melalui klausa ON dalam klausa FROM.
INNER JOIN atau JOIN boleh digunakan secara berterusan antara berbilang jadual dalam klausa FROM, supaya cantuman dalaman berbilang jadual boleh direalisasikan pada masa yang sama.
Kedua-dua jadual tb_students_info dan jadual tb_departments mengandungi field dept_id jenis data yang sama dan pertanyaan cantuman dalaman digunakan antara kedua-dua jadual.
Input pernyataan SQL dan hasil pelaksanaan adalah seperti berikut
mysql> SELECT id,name,age,dept_name -> FROM tb_students_info,tb_departments -> WHERE tb_students_info.dept_id=tb_departments.dept_id; +----+--------+------+-----------+ | id | name | age | dept_name | +----+--------+------+-----------+ | 1 | Dany | 25 | Computer | | 2 | Green | 23 | Chinese | | 3 | Henry | 23 | Math | | 4 | Jane | 22 | Computer | | 5 | Jim | 24 | Computer | | 6 | John | 21 | Math | | 7 | Lily | 22 | Computer | | 8 | Susan | 23 | Economy | | 9 | Thomas | 22 | Chinese | | 10 | Tom | 23 | Economy | +----+--------+------+-----------+ 10 rows in set (0.00 sec)
Di sini, perbezaan terbesar antara pernyataan SELECT dan pengenalan sebelumnya ialah: lajur yang dinyatakan selepas SELECT tergolong dalam dua jadual berbeza, id , nama dan umur terdapat dalam jadual tb_students_info, dan dept_name berada dalam jadual tb_departments Pada masa yang sama, klausa FROM menyenaraikan dua jadual tb_students_info dan tb_departments. Klausa WHERE digunakan sebagai syarat penapis di sini, menunjukkan bahawa hanya apabila nilai medan dept_id dalam dua jadual adalah sama, syarat untuk pertanyaan gabungan dipenuhi.
Seperti yang anda boleh lihat daripada hasil yang dikembalikan, rekod yang dipaparkan ialah rekod baharu yang terdiri daripada nilai lajur berbeza dalam dua jadual.
Petua: Oleh kerana jadual tb_students_info dan jadual tb_departments mempunyai dept_id medan yang sama, apabila membandingkan, nama jadual perlu memenuhi syarat sepenuhnya (dalam format "nama jadual.nama ruangan" jika hanya dept_id diberikan, MySQL tidak akan tahu yang mana satu dirujuk dan akan mengembalikan mesej ralat.
Antara jadual tb_students_info dan jadual tb_departments, gunakan sintaks INNER JOIN untuk melakukan pertanyaan gabungan dalaman Pernyataan SQL input dan keputusan pelaksanaan adalah seperti berikut.
mysql> SELECT id,name,age,dept_name -> FROM tb_students_info INNER JOIN tb_departments -> WHERE tb_students_info.dept_id=tb_departments.dept_id; +----+--------+------+-----------+ | id | name | age | dept_name | +----+--------+------+-----------+ | 1 | Dany | 25 | Computer | | 2 | Green | 23 | Chinese | | 3 | Henry | 23 | Math | | 4 | Jane | 22 | Computer | | 5 | Jim | 24 | Computer | | 6 | John | 21 | Math | | 7 | Lily | 22 | Computer | | 8 | Susan | 23 | Economy | | 9 | Thomas | 22 | Chinese | | 10 | Tom | 23 | Economy | +----+--------+------+-----------+ 10 rows in set (0.00 sec)
INNER JOIN digunakan untuk menentukan hubungan antara dua jadual dalam pernyataan pertanyaan.. Apabila menggunakan sintaks ini, syarat sambungan diberikan menggunakan klausa ON dan bukannya WHERE ON dan syarat yang dinyatakan selepas WHERE adalah sama.
Atas ialah kandungan terperinci Apakah kaedah pertanyaan gabungan dalaman dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!