Orang awam+AB unik A
Orang awam AB+ unik B
Orang awam AB
Eksklusif A
Eksklusif B
Eksklusif A + Eksklusif B + Orang awam AB
Eksklusif A + B eksklusif
Buat jadual
Meja jabatan
DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `dept_id` int(11) NOT NULL AUTO_INCREMENT, `dept_name` varchar(30) DEFAULT NULL, `dept_number` int(11) DEFAULT NULL, PRIMARY KEY (`dept_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; INSERT INTO `dept` VALUES ('1', 'AA', '100'); INSERT INTO `dept` VALUES ('2', 'BB', '200'); INSERT INTO `dept` VALUES ('3', 'CC', '300'); INSERT INTO `dept` VALUES ('4', 'DD', '400'); INSERT INTO `dept` VALUES ('5', 'HH', '500');
Meja pekerja
DROP TABLE IF EXISTS `emp`; CREATE TABLE `emp` ( `emp_id` int(11) NOT NULL AUTO_INCREMENT, `emp_name` varchar(30) DEFAULT NULL, `emp_age` int(11) DEFAULT NULL, `dept_id` int(11) NOT NULL, PRIMARY KEY (`emp_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; INSERT INTO `emp` VALUES('1', 'zhangsan', '20', '1'); INSERT INTO `emp` VALUES('2', 'lisi', '25', '6'); INSERT INTO `emp` VALUES('3', 'wangwu', '19', '4'); INSERT INTO `emp` VALUES('4', 'zhaoliu', '29', '5'); INSERT INTO `emp` VALUES('5', 'xiaohong', '30', '2'); INSERT INTO `emp` VALUES('6', 'xiaohu', '26', '3'); INSERT INTO `emp` VALUES('7', 'zhangle', '23', '3'); INSERT INTO `emp` VALUES('8', 'qingtian', '38', '3'); INSERT INTO `emp` VALUES('9', 'xiayutian', '36', '2'); INSERT INTO `emp` VALUES('10', 'fangjia', '40', '1');
Analisis Senario
Kiri sertai )
A's unique + AB's public
SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id;
Right join (right join)
Unik B + AB
SELECT * from emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id;
3 Orang awam AB
SELECT * from emp e INNER JOIN dept d ON e.dept_id=d.dept_id;
4 Sambungan luar kiri (sambung kiri dan jadual kanan = batal)
Unik A
SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id WHERE d.dept_id is null;
5 Cantuman luar kanan (cantuman kanan dan meja kiri = null)
Unik B
SELECT * from emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id WHERE e.dept_id is null;
6 gabungan luar penuh
Unik + B +. Orang awam AB
Nota: MySQL tidak menyokong FULL OUTER JOIN (disokong dalam ORACLE).
Jadi gunakan UNION untuk melaksanakannya, anda boleh **gabung + alih keluar pendua**
Senario aplikasi:
Untuk ditanya Hasilnya datang daripada berbilang jadual, dan berbilang jadual tidak mempunyai hubungan sambungan langsung, tetapi maklumat yang ditanya adalah konsisten
Ciri:
1 🎜 >Bilangan lajur pertanyaan dalam pernyataan pertanyaan adalah sama
2 Untuk pertanyaan yang memerlukan berbilang pernyataan pertanyaanjenis dan susunan setiap lajur hendaklah konsisten<🎜. >
3. Kata kunci kesatuan ** mengalih keluar pendua secara lalaiJika anda menggunakan kesatuan semua, ia boleh mengandungi pendua**
SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id UNION SELECT * FROM emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id;
.
7. Semua join asing (sambungan luar penuh dan jadual kiri dan kanan = batal)Unik A + B
SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id WHERE d.dept_id is null UNION SELECT * FROM emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id WHERE e.dept_id is null;
Atas ialah kandungan terperinci Cara menggunakan JOIN dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!