Android中SQL UNION联合查询的使用

前言


无感!


 邮箱要做最近联系人的功能,而邮件是在本地数据库中存储的,则通过数据库的查询则可以很快的实现需求,这里就用到了联合查询,联合查询需要使用关键字UNION.


 UNION使用注意事项


1.使用UNION必须有两条或者两条以上的SELECT语句组成,语句之间用UNION关键字分割

2.使用UNION关联的每个子查询必须包含相同的检索列、表达式或这聚集函数(次序可以不一样)

3.列数据类型必须兼容;类型不必完全相同,但必须是DBMS可以隐含转换的类型(不同的数值类型或者不同的日期类型)

4.UNION几乎总是完成与多个WHERE条件相同的工作,UNION ALL是UNION的一种形式,它完成WHERE子句完成不了的工作,因为他将返回每个条件的匹配行(包括重复行)

5.使用组合查询,当需要对结果进行排序是,只能指定一条Order By语句,这条语句只能放在最后一天SELECT语句的后面.


使用SQLite Expert 查询演示


 下面这个SQL语句的分两个部分说下:
1.UNION关键字前的SQL语句:从邮件表中查询出toAdd,dateTime(按时间排序需要这个列)这两列的数据集合.
2.UNION关键字后面的SQL语句:从邮件表中查询出fromAdd,dateTime这两列的数据集合.
3.看上面UNION的使用规范,这两列的数据类型必须兼容(我们数据类型是一样的);必须有两个select 查询;最后一个select使用order by语句;多个select查询中间使用UNIION关键字;以上均满足
4.为什么使用as,as可以叫做别名,就是查询出的这个列重命名为email,这是为了方便外层查询使用
5.最外层SQL语句含义:从这两个联合查询的结果集中,查询10条email的数据并进行去重(distinct关键字是去重的意思)

select distinct email from (select toAdd as email,dateTime from MailTable union select fromAdd as email,dateTime from MailTable  order by dateTime desc)  limit 10

联合查询的运行效果截图如下:




最终的完整查询效果截图如下:




其实也很好理解,大家有不懂的留言即可!




发布了60 篇原创文章 · 获赞 109 · 访问量 36万+

猜你喜欢

转载自blog.csdn.net/shenshibaoma/article/details/77228909