在前几章节中,我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。
本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。
你可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。
(资料图)
JOIN 按照功能大致分为如下三类:
本章节使用的数据库结构及数据下载:kxdang-mysql-join-test.sql。
我们在RUNOOB数据库中有两张表 tcount_tbl 和 kxdang_tbl。两张数据表数据如下:
尝试以下实例:
mysql> use RUNOOB;Database changedmysql> SELECT * FROM tcount_tbl;+---------------+--------------+| kxdang_author | kxdang_count |+---------------+--------------+| 菜鸟教程 | 10 || RUNOOB.COM | 20 || Google | 22 |+---------------+--------------+3 rows in set (0.01 sec) mysql> SELECT * from kxdang_tbl;+-----------+---------------+---------------+-----------------+| kxdang_id | kxdang_title | kxdang_author | submission_date |+-----------+---------------+---------------+-----------------+| 1 | 学习 PHP | 菜鸟教程 | 2017-04-12 || 2 | 学习 MySQL | 菜鸟教程 | 2017-04-12 || 3 | 学习 Java | RUNOOB.COM | 2015-05-01 || 4 | 学习 Python | RUNOOB.COM | 2016-03-06 || 5 | 学习 C | FK | 2017-04-05 |+-----------+---------------+---------------+-----------------+5 rows in set (0.01 sec)接下来我们就使用MySQL的**INNER JOIN(也可以省略 INNER 使用 JOIN,效果一样)**来连接以上两张表来读取kxdang_tbl表中所有kxdang_author字段在tcount_tbl表对应的kxdang_count字段值:
mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a INNER JOIN tcount_tbl b ON a.kxdang_author = b.kxdang_author;+-------------+-----------------+----------------+| a.kxdang_id | a.kxdang_author | b.kxdang_count |+-------------+-----------------+----------------+| 1 | 菜鸟教程 | 10 || 2 | 菜鸟教程 | 10 || 3 | RUNOOB.COM | 20 || 4 | RUNOOB.COM | 20 |+-------------+-----------------+----------------+4 rows in set (0.00 sec)以上 SQL 语句等价于:
mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a, tcount_tbl b WHERE a.kxdang_author = b.kxdang_author;+-------------+-----------------+----------------+| a.kxdang_id | a.kxdang_author | b.kxdang_count |+-------------+-----------------+----------------+| 1 | 菜鸟教程 | 10 || 2 | 菜鸟教程 | 10 || 3 | RUNOOB.COM | 20 || 4 | RUNOOB.COM | 20 |+-------------+-----------------+----------------+4 rows in set (0.01 sec)MySQL left join 与 join 有所不同。 MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。
尝试以下实例,以kxdang_tbl为左表,tcount_tbl为右表,理解 MySQL LEFT JOIN 的应用:
mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a LEFT JOIN tcount_tbl b ON a.kxdang_author = b.kxdang_author;+-------------+-----------------+----------------+| a.kxdang_id | a.kxdang_author | b.kxdang_count |+-------------+-----------------+----------------+| 1 | 菜鸟教程 | 10 || 2 | 菜鸟教程 | 10 || 3 | RUNOOB.COM | 20 || 4 | RUNOOB.COM | 20 || 5 | FK | NULL |+-------------+-----------------+----------------+5 rows in set (0.01 sec)以上实例中使用了 LEFT JOIN,该语句会读取左边的数据表 kxdang_tbl 的所有选取的字段数据,即便在右侧表 tcount_tbl中 没有对应的 kxdang_author 字段值。
MySQL RIGHT JOIN 会读取右边数据表的全部数据,即便左边边表无对应数据。
尝试以下实例,以kxdang_tbl为左表,tcount_tbl为右表,理解MySQL RIGHT JOIN的应用:
mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a RIGHT JOIN tcount_tbl b ON a.kxdang_author = b.kxdang_author;+-------------+-----------------+----------------+| a.kxdang_id | a.kxdang_author | b.kxdang_count |+-------------+-----------------+----------------+| 1 | 菜鸟教程 | 10 || 2 | 菜鸟教程 | 10 || 3 | RUNOOB.COM | 20 || 4 | RUNOOB.COM | 20 || NULL | NULL | 22 |+-------------+-----------------+----------------+5 rows in set (0.01 sec)以上实例中使用了 RIGHT JOIN,该语句会读取右边的数据表 tcount_tbl 的所有选取的字段数据,即便在左侧表 kxdang_tbl 中没有对应的kxdang_author 字段值。
PHP 中使用 mysqli_query() 函数来执行 SQL 语句,你可以使用以上的相同的 SQL 语句作为 mysqli_query() 函数的参数。
尝试如下实例:
菜鸟教程 MySQL JOIN 测试";echo "
教程 ID 作者 登陆次数 ";while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)){ echo " {$row["kxdang_id"]} ". "{$row["kxdang_author"]} ". "{$row["kxdang_count"]} ". " ";}echo "
";mysqli_close($conn);?> 标签:
精彩推荐
同花顺数据中心显示,上海莱士12月16日获融资买入3858 01万元,占当日买入金额的13 16%,当前融资余额...
龙海:G228线白坑交通量观测站正式开工建设
1、这要分情况,有些可以机洗,有些不可以,比如说像冬天的棉被、蚕丝被及羊毛被等比较厚的就不可以机洗...
明日废钢预测:今日国内废钢市场将稳定。今天国内废钢回收价格是多少?个别钢厂采购价格有所调整。钢铁焦...
证券代码:002411 证券简称:*ST 必康 公告编号:2022-157 ...
格隆汇12月16日丨第七届“格隆汇·全球投资嘉年华·2023”于12月15日一22日在线上盛大举行。在今天的格...
根据市场公开信息及12月15日披露的机构调研信息,鑫元基金近期对1家上市公司进行了调研,相关名单如下:...
如果有一天,你骑车走在街上,突然有人将你拦下,莫名指责你的车碰到了他,怎么办?近日,濮阳市公安局...
“退钱”,华泰柏瑞昔日爆款基金跌50%,副总经理李晓西遭吐槽
同花顺数据中心显示,芯碁微装12月14日获融资买入886 09万元,占当日买入金额的15 03%,当前融资余额7...
智通财经APP讯,辽宁能源(600758 SH)公告,截至2022年12月14日,公司股东辽宁交通投资有限责任公司(“...
日前,人社部、国家发改委等八部门印发《关于实施重点群体创业推进行动的通知》(下称《通知》)。《通知...
12月13日,银华价值优选混合最新单位净值为2 2823元,累计净值为7 5977元,较前一交易日下跌1 03%。...
截至2022年12月13日收盘,天目湖(603136)报收于28 92元,上涨1 97%,换手率2 7%,成交量5 03万手,成交额1 46亿元。
恒源煤电(600971)12月13日在投资者关系平台上答复了投资者关心的问题。投资者:请问,截至2022年十二月9...
克明食品12月10日发布投资者关系活动记录表,公司于2022年12月8日接受5家机构单位调研,机构类型为基金...
1、种植的时,鸡枞菌适合种植的时间是在每年的九月份到十月份这段时间内,这段时间内的温度和气候都是比...
证券代码:603690 证券简称:至纯科技 公告编号:2022-144 ...
香港交易及結算所有限公司及香港聯合交易所有限公司對本公告之內容概不負責,對其準確性或完整性亦不發...
10月30日,镇平县枣园镇党委书记刘柯兵到枣园镇招商引资项目镇平县振星铜业有限公司检查指导工作,与企...
仁和药业(000650)12月06日在投资者关系平台上答复了投资者关心的问题。投资者:请问市场上销售的 "仁和...
近日,山东省高级人民法院向社会通报全省法院消费者权益司法保护工作情况及10起典型案例。据了解,五年...
南京市19日通报,公安部门在疫情防控期间依法打击各类涉疫违法犯罪行为,截至3月18日,全市共查处各类涉...
日前,北京市人民政府新闻办公室举行新闻发布会,解读《北京市全民科学素质行动规划纲要(2021—2035年)...
资讯News
06-09
06-09
06-09
06-09
06-09
06-08
06-08
06-08
06-08
06-08
06-08
06-08
06-08
06-08
06-08
06-08
06-08
06-08
06-08
06-08
聚焦Policy
当好农民工的“护薪人” 近日,罗某等7名农民工在收到被拖欠的工资后,纷纷打电话向江西省南昌市...
“通讯录里所有人都知道我欠钱了” □ 本报记者 韩丹东 □ 本报见习记者 张守坤 ...
大连宝马车撞人案肇事司机被判死刑 本报讯 记者韩宇 10月29日,辽宁省大连市中级人民法院一审...
医院财务迷上网络赌博输光5000万元公款 □ 本报记者 马维博 □ 本报通讯员 汪宇堂 曹...
辊环车削 雕琢毫厘(工匠绝活) 【绝活看点】 23年来,雷虎始终扎根一线,改进钢材轧制工艺...
交警严查超标电动自行车挪用“白牌” 截至昨晚6时,处罚电动自行车违法行为共计6585笔;下一步将...
明起寒潮来袭 北方气温普降10℃以上 中央气象台预计,本周日北京平原地区最低气温降至-4℃左右...
多种蔬菜价格降幅达五成 包括菠菜、蒿子秆等 预计本月中旬蔬菜恢复供需平衡 本报讯(记者...
北京周日最低气温或达-4℃ 本报讯(记者 赵婷婷)北京青年报记者昨天从中央气象台获悉,新一股...
昌平一家四口确诊新冠肺炎 天通北苑第二社区升级为中风险地区 朝阳两涉疫校区及16所学校停课 ...