SQL INNER JOIN 用法解决

php中文网
发布: 2016-06-07 17:47:58
原创
1203人浏览过

在表中存在至少一个匹配时,inner join 关键字返回行。

inner join 关键字语法
column_name(s)
from table_name1
inner join table_name2
on table_name1.column_name=table_name2.column_name
注释:inner join 与 join 是相同的,inner join 关键字在表中存在至少一个匹配时返回行。如果 "a" 中的行在 "b" 中没有匹配,就不会列出这些行。


多表联合查询

 

> mysql> create table books(     ->    bookid smallint not null primary key,     ->    booktitle varchar(60) not null,     ->    copyright year not null     -> )     -> engine=innodb; query ok, 0 rows affected (0.09 sec) mysql> mysql> mysql> insert into books values (12786, 'java',           1934),     ->                          (13331, 'mysql',          1919),     ->                          (14356, '',            1966),     ->                          (15729, 'perl',           1932),     ->                          (16284, 'oracle',         1996),     ->                          (17695, 'pl/sql',         1980),     ->                          (19264, '',     1992),     ->                          (19354, 'www.zhutiai.com', 1993); query ok, 8 rows affected (0.05 sec) records: 8  duplicates: 0  warnings: 0 mysql> mysql> mysql> create table authors(     ->    authid smallint not null primary key,     ->    authfn varchar(20),     ->    authmn varchar(20),     ->    authln varchar(20)     -> )     -> engine=innodb; query ok, 0 rows affected (0.05 sec) mysql> mysql> mysql> insert into authors values (1006, 'h', 's.', 't'),     ->                            (1007, 'j', 'c',  'o'),     ->                            (1008, 'b', null, 'e'),     ->                            (1009, 'r', 'm',  'r'),     ->                            (1010, 'j', 'k',  't'),     ->                            (1011, 'j', 'g.', 'n'),     ->                            (1012, 'a', null, 'p'),     ->                            (1013, 'a', null, 'w'),     ->                            (1014, 'n', null, 'a'); query ok, 9 rows affected (0.03 sec) records: 9  duplicates: 0  warnings: 0 mysql> mysql> mysql> create table authorbook(     ->    authid smallint not null,     ->    bookid smallint not null,     ->    primary key (authid, bookid),     ->    foreign key (authid) references authors (authid),     ->    foreign key (bookid) references books (bookid)     -> )     -> engine=innodb; query ok, 0 rows affected (0.06 sec) mysql> mysql> mysql> insert into authorbook values (1006, 14356),     ->                               (1008, 15729),     ->                               (1009, 12786),     ->                               (1010, 17695),     ->                               (1011, 15729),     ->                               (1012, 19264),     ->                               (1012, 19354),     ->                               (1014, 16284); query ok, 8 rows affected (0.05 sec) records: 8  duplicates: 0  warnings: 0 mysql> mysql> mysql> select * from authors; +--------+--------+--------+--------+ | authid | authfn | authmn | authln | +--------+--------+--------+--------+ |   1006 | h      | s.     | t      | |   1007 | j      | c      | o      | |   1008 | b      | null   | e      | |   1009 | r      | m      | r      | |   1010 | j      | k      | t      | |   1011 | j      | g.     | n      | |   1012 | a      | null   | p      | |   1013 | a      | null   | w      | |   1014 | n      | null   | a      | +--------+--------+--------+--------+ 9 rows in set (0.00 sec) mysql> select * from books; +--------+----------------+-----------+ | bookid | booktitle      | copyright | +--------+----------------+-----------+ |  12786 | java           |      1934 | |  13331 | mysql          |      1919 | |  14356 | php            |      1966 | |  15729 | perl           |      1932 | |  16284 | oracle         |      1996 | |  17695 | pl/sql         |      1980 | |  19264 | javascript     |      1992 | |  19354 | |      1993 | +--------+----------------+-----------+ 8 rows in set (0.00 sec) mysql> select * from authorbook; +--------+--------+ | authid | bookid | +--------+--------+ |   1009 |  12786 | |   1006 |  14356 | |   1008 |  15729 | |   1011 |  15729 | |   1014 |  16284 | |   1010 |  17695 | |   1012 |  19264 | |   1012 |  19354 | +--------+--------+ 8 rows in set (0.00 sec) mysql> mysql> mysql> select booktitle, authid from books inner join authorbook; +----------------+--------+ | booktitle      | authid | +----------------+--------+ | java           |   1006 | | mysql          |   1006 | | php            |   1006 | | perl           |   1006 | | oracle         |   1006 | | pl/sql         |   1006 | | javascript     |   1006 | | |   1006 | | java           |   1008 | | mysql          |   1008 | | php            |   1008 | | perl           |   1008 | | oracle         |   1008 | | pl/sql         |   1008 | | javascript     |   1008 | | |   1008 | | java           |   1009 | | mysql          |   1009 | | php            |   1009 | | perl           |   1009 | | oracle         |   1009 | | pl/sql         |   1009 | | javascript     |   1009 | | |   1009 | | java           |   1010 | | mysql          |   1010 | | php            |   1010 | | perl           |   1010 | | oracle         |   1010 | | pl/sql         |   1010 | | javascript     |   1010 | | |   1010 | | java           |   1011 | | mysql          |   1011 | | php            |   1011 | | perl           |   1011 | | oracle         |   1011 | | pl/sql         |   1011 | | javascript     |   1011 | | |   1011 | | java           |   1012 | | mysql          |   1012 | | php            |   1012 | | perl           |   1012 | | oracle         |   1012 | | pl/sql         |   1012 | | javascript     |   1012 | | |   1012 | | java           |   1012 | | mysql          |   1012 | | php            |   1012 | | perl           |   1012 | | oracle         |   1012 | | pl/sql         |   1012 | | javascript     |   1012 | | |   1012 | | java           |   1014 | | mysql          |   1014 | | php            |   1014 | | perl           |   1014 | | oracle         |   1014 | | pl/sql         |   1014 | | javascript     |   1014 | | |   1014 | +----------------+--------+ 64 rows in set (0.00 sec) mysql> mysql> drop table authorbook; query ok, 0 rows affected (0.02 sec) mysql> drop table books; query ok, 0 rows affected (0.06 sec) mysql> drop table authors; query ok, 0 rows affected (0.03 sec)

二个表连接

mysql> select employee.first_name, job.title, duty.task
    -> from employee, job, duty
    -> where (employee.id = job.id and employee.id = duty.id);
+------------+------------+-----------+
| first_name | title      | task      |
+------------+------------+-----------+
| jason      | tester     | test      |
| alison     | accountant | calculate |
| james      | developer  | program   |
| celia      | coder      | test      |
| robert     | director   | manage    |
| linda      | mediator   | talk      |
| david      | proffessor | speak     |
| james      | programmer | shout     |
+------------+------------+-----------+
8 rows in set (0.00 sec)

mysql>
mysql>
mysql>
mysql> drop table duty;
query ok, 0 rows affected (0.00 sec)

mysql> drop table job;
query ok, 0 rows affected (0.01 sec)

mysql> drop table employee;
query ok, 0 rows affected (0.00 sec)


总结

inner join 连接两个数据表的用法:
select * from 表1 inner join 表2 on 表1.字段号=表2.字段号

inner join 连接三个数据表的用法:
select * from (表1 inner join 表2 on 表1.字段号=表2.字段号) inner join 表3 on 表1.字段号=表3.字段号

inner join 连接四个数据表的用法:
select * from ((表1 inner join 表2 on 表1.字段号=表2.字段号) inner join 表3 on 表1.字段号=表3.字段号) inner join 表4 on member.字段号=表4.字段号

inner join 连接五个数据表的用法:
select * from (((表1 inner join 表2 on 表1.字段号=表2.字段号) inner join 表3 on 表1.字段号=表3.字段号) inner join 表4 on member.字段号=表4.字段号) inner join 表5 on member.字段号=表5.字段号

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号