数据库知识学习之SQL语句多表联合查询
程序员文章站
2023-11-19 17:43:46
@概述
@union
union的作用是将【查询结果字段数相同的两个表】进行强制合并
# 查询名字带东的省和名字带东的市,将结果合并为一张表
select proname as name fr...
@概述
@union
union的作用是将【查询结果字段数相同的两个表】进行强制合并
# 查询名字带东的省和名字带东的市,将结果合并为一张表 select proname as name from t_province where proname like '%东%' union select cityname from t_city where cityname like '%东%';
@join
两张不同的表可能会有字段名和字段值都相等的部分,根据这部分,可以将两张表联合起来进行查询: 使用join或inner join联合起来的两张表,查询结果为两表交集的部分;
看一个例子,首先从城市表中查询到每个省的地级市数量:
# 查询各省地级市数量,取前十名 select proid,count(cityid) cities from t_city group by proid order by cities desc limit 10;
将这张表起一个别名top10,联合省份表(共有34条数据),我们来做一个联合查询:
# 使用join联合省份表(tp)和top10进行查询 # 联合的条件是tp.proid = top10.proid # 查询结果是左右两表交集的部分 select tp.proname,top10.cities from t_province tp join ( select proid,count(cityid) cities from t_city group by proid order by cities desc limit 10 ) top10 on tp.proid = top10.proid;
使用left join联合起来的两张表,查询结果为左表的全部内容+两表交集的部分:
# 使用left join联合省份表(tp)和top10进行查询 # 联合的条件是tp.proid = top10.proid # 查询结果是左表全部 + 两表交集的部分 select tp.proname,top10.cities from t_province tp left join ( select proid,count(cityid) cities from t_city group by proid order by cities desc limit 10 ) top10 on tp.proid = top10.proid;
查询结果:省份表的全部 + 两表交集的部分
使用right join联合起来的两张表,查询结果为右表的全部内容+两表交集的部分:
原理相同,大家可以自行将左右表位置互换进行测试,这里就不再演示了;
上一篇: 另纸签证是什么东西(另纸签证需要保留吗)