mySql联合两个查询结果用UNION或者UNION ALL
来源:互联网 发布:如何更换网络节点 编辑:程序博客网 时间:2024/05/18 21:07
项目开发中由于业务的需求,可能将两个业务实体放在两张表(或在两个查询结果)中,但有时候项目需要将这两张表(或查询结果)的所有记录联合起来,就可以用到UNION或UNION ALL,其中UNION ALL是不去重复,而UNION将把结果之和去重(类似于distinct)。
第一个查询:
SELECT cv.* FROM study_card AS scd LEFT JOIN stuc_course AS sce ON scd.id=sce.stuc_id LEFT JOIN course_view AS cv ON cv.id=sce.course_id WHERE scd.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND scd.is_used=1
查询结果如图:
加上distinct后,
SELECT DISTINCT cv.* FROM study_card AS scd LEFT JOIN stuc_course AS sce ON scd.id=sce.stuc_id LEFT JOIN course_view AS cv ON cv.id=sce.course_id WHERE scd.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND scd.is_used=1
查询结果如图:
第二个查询:
SELECT cv.* FROM orders AS o LEFT JOIN course_view AS cv ON o.course_id=cv.id WHERE o.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND o.is_finished=1
联合查询,用UNION ALL:
SELECT cv.* FROM study_card AS scd LEFT JOIN stuc_course AS sce ON scd.id=sce.stuc_id LEFT JOIN course_view AS cv ON cv.id=sce.course_id WHERE scd.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND scd.is_used=1 UNION ALL SELECT cv.* FROM orders AS o LEFT JOIN course_view AS cv ON o.course_id=cv.id WHERE o.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND o.is_finished=1
查询结果:
使用UNION:
SELECT cv.* FROM study_card AS scd LEFT JOIN stuc_course AS sce ON scd.id=sce.stuc_id LEFT JOIN course_view AS cv ON cv.id=sce.course_id WHERE scd.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND scd.is_used=1 UNION SELECT cv.* FROM orders AS o LEFT JOIN course_view AS cv ON o.course_id=cv.id WHERE o.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND o.is_finished=1
查询结果是:
使用联合查询的注意事项:
列数,列类型必须相同。
除此之外,联合查询可以加上分页LIMIT,如:
SELECT cv.* FROM study_card AS scd LEFT JOIN stuc_course AS sce ON scd.id=sce.stuc_id LEFT JOIN course_view AS cv ON cv.id=sce.course_id WHERE scd.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND scd.is_used=1 UNION SELECT cv.* FROM orders AS o LEFT JOIN course_view AS cv ON o.course_id=cv.id WHERE o.user_id='08fdeff8ca884d61a2c88c228f7d7404' AND o.is_finished=1 LIMIT 0,3
0 0
- mySql联合两个查询结果用UNION或者UNION ALL
- union 联合查询结果
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询union和union all的使用介绍
- Mysql联合查询UNION和UNION ALL的使用介绍
- Mysql联合查询union和union all的使用介绍
- mysql union, union all合并两个结果集
- mysql union, union all合并两个结果集
- SQL联合查询优化 用union all来代替union
- SQL联合查询优化 用union all来代替union
- mysql UNION联合查询
- union(联合)合并查询结果
- 如何使用Android MediaStore裁剪大图片
- PHP学习:全局变量和局部变量的互相引用
- TCP实现文本文件上传
- 合并表记录(华为机试题)
- 做最艰难的事,才是进步最大的时候
- mySql联合两个查询结果用UNION或者UNION ALL
- 分析源码之ArrayList 第一篇 --- 源码初步分析
- Response对象生成随机验证码
- 【精品转载】Android配置文件,所有权限
- php实现直接插入排序
- 养成记录的习惯
- UVALive 6697
- VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)
- jpeg压缩