MySQL——连接查询(特殊的多表查询)
2021-12-22 本文已影响0人
刘铁崧
连接查询(将具有管理关系的多个表连接起来进行查询操作)
1. 内连接
语法格式:
· SELECT 字段名列表 FROM 表1 INNER JOIN 表2 ON 连接条件;
· SELECT 字段名列表 FROM 表1 INNER JOIN 表2 ON 连接条件 INNER JOIN 表2 ON 连接条件 ...;(多次内联)案例:省、市、县 三个表中查询信息,县中的father_id对应市的id,市中的father_id对应省中的province_id
(普通多表查询中有案例表可参考)查出所有的省市信息 SELECT provincelist.province_name,citylist.city_name FROM provincelist INNER JOIN citylist ON provincelist.privince_id=citylist.father_id; 查询出所有省市县信息 SELECT provincelist.province_name,citylist.city_name,countrylist.country_name FROM provincelist INNER JOIN citylist ON provincelist.privince_id=citylist.father_id INNER JOIN countrylist ON citylist.city_id=countrylist.father_id;
2. 外连接(与其他区别:匹配不成功的记录会显示为NULL,普通多表查询与内连接查询不显示匹配失败的记录)
左连接(以左表为主,显示查询结果)
拿左表为基准,去右表寻找与左表相匹配的记录,有值则记录,无值则置NULL
语法格式:
· SELECT 字段名列表 FROM 表1 LEFT JOIN 表2 ON 连接条件;
· SELECT 字段名列表 FROM 表1 LEFT JOIN 表2 ON 连接条件 LEFT JOIN 表3 ON 连接条件...;
右连接
语法格式:
· SELECT 字段名列表 FROM 表1 RIGHT JOIN 表2 ON 连接条件;
· SELECT 字段名列表 FROM 表1 RIGHT JOIN 表2 ON 连接条件 RIGHT JOIN 表3 ON 连接条件...;案例:
查询出所有省市县信息(以左表参数为基准) SELECT provincelist.province_name,citylist.city_name,countrylist.country_name FROM provincelist LEFT JOIN citylist ON provincelist.privince_id=citylist.father_id LEFT JOIN countrylist ON citylist.city_id=countrylist.father_id; 查询出所有省市县信息(以右表参数为基准) SELECT provincelist.province_name,citylist.city_name,countrylist.country_name FROM provincelist RIGHT JOIN citylist ON provincelist.privince_id=citylist.father_id RIGHT JOIN countrylist ON citylist.city_id=countrylist.father_id;