动手写出这个SQL,加深自己对于JOIN内容的学习
2013-11-02 17:04
232 查看
讨论背景:
(新用户)通过表A获取的记录集,如下:
1 2012-11-1
3 2012-11-2
8 2012-11-5
(老用户)通过表B获取的记录集,如下:
5 2012-11-1
3 2012-11-2
我想将这两个结果集合并为一个结果集。显示的结果如下:
日期 新用户 老用户
2012-11-1 1 5
2012-11-2 3 3
2012-11-5 8 0
如果不能合并。只能在查找注册用户的语句循环中。每次都要通过当前的日期来再做一次查询(统计老用户)。这样的效率也太低。
讨论话题:如何合并两个查询的结果集的数据?
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> CREATE TABLE A (rid number,rdate date);
表已创建。
SQL> INSERT INTO A VALUES (1,'01-11月-12');
已创建 1 行。
SQL> INSERT INTO A VALUES (3,'02-11月-12');
已创建 1 行。
SQL> INSERT INTO A VALUES (8,'05-11月-12');
已创建 1 行。
SQL> commit;
提交完成。
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> CREATE TABLE B (rid number,rdate date);
表已创建。
SQL> INSERT INTO B VALUES (5,'01-11月-12');
已创建 1 行。
SQL> INSERT INTO B VALUES (3,'02-11月-12');
已创建 1 行。
SQL> commit;
提交完成。
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> SELECT * FROM a;
RID RDATE
---------- --------------
1 01-11月-12
3 02-11月-12
8 05-11月-12
SQL> SELECT * FROM b;
RID RDATE
---------- --------------
5 01-11月-12
3 02-11月-12
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> SELECT a.rdate "日期", a.rid "新用户",NVL(b.rid,0) "老用户" FROM a FULL OUTER JOIN b ON a.rdate=b.rdate;
日期 新用户 老用户
-------------- ---------- ----------
01-11月-12 1
5
02-11月-12 3
3
05-11月-12 8
0
(新用户)通过表A获取的记录集,如下:
1 2012-11-1
3 2012-11-2
8 2012-11-5
(老用户)通过表B获取的记录集,如下:
5 2012-11-1
3 2012-11-2
我想将这两个结果集合并为一个结果集。显示的结果如下:
日期 新用户 老用户
2012-11-1 1 5
2012-11-2 3 3
2012-11-5 8 0
如果不能合并。只能在查找注册用户的语句循环中。每次都要通过当前的日期来再做一次查询(统计老用户)。这样的效率也太低。
讨论话题:如何合并两个查询的结果集的数据?
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> CREATE TABLE A (rid number,rdate date);
表已创建。
SQL> INSERT INTO A VALUES (1,'01-11月-12');
已创建 1 行。
SQL> INSERT INTO A VALUES (3,'02-11月-12');
已创建 1 行。
SQL> INSERT INTO A VALUES (8,'05-11月-12');
已创建 1 行。
SQL> commit;
提交完成。
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> CREATE TABLE B (rid number,rdate date);
表已创建。
SQL> INSERT INTO B VALUES (5,'01-11月-12');
已创建 1 行。
SQL> INSERT INTO B VALUES (3,'02-11月-12');
已创建 1 行。
SQL> commit;
提交完成。
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> SELECT * FROM a;
RID RDATE
---------- --------------
1 01-11月-12
3 02-11月-12
8 05-11月-12
SQL> SELECT * FROM b;
RID RDATE
---------- --------------
5 01-11月-12
3 02-11月-12
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> SELECT a.rdate "日期", a.rid "新用户",NVL(b.rid,0) "老用户" FROM a FULL OUTER JOIN b ON a.rdate=b.rdate;
日期 新用户 老用户
-------------- ---------- ----------
01-11月-12 1
5
02-11月-12 3
3
05-11月-12 8
0
相关文章推荐
- 对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过文氏图 Venn diagrams 解释了SQL的Join。我觉得清楚易懂,转过来。 交差集" cross join 《Linux命令行与shell脚本编程大全
- [学习笔记]Java代码构建一个线程池的自己学习写的实例,用这个你会更好的理解文章内容
- 程序猿应该了解的内容以及程序猿如何强迫自己学习(思考篇)
- 自己学习的内容
- 3.23学习内容,竖立seekbar,sql获取删除重复数据
- boj 1336 简单的问题 不过自己没想到 别人解释的~~学习~~这个是 第二类Stirling数 需要再好好看看
- SQL纯手写创建数据库到表内内容
- SQL 语句Left join/Right join/inner join的学习讲解
- android 学习笔记 创建自己的内容提供器
- SQL的详细语法介绍——对于学习数据库最基础知识一
- 记录 在这个msdn的资源里面可以看到如下几个内容可供学习研究
- 【加入自己的部分内容】Linux设备驱动模型学习之基础篇--Kobject.txt翻译
- 程序猿应该了解的内容以及程序猿如何强迫自己学习(算法篇)
- 自己手写的滑块验证码,前端签证码。因为极验验证好像要收费,自己纯手工打造,大家可以自己在这个基础上改进
- 在自己电脑上简单搭建SQL学习平台
- SQL学习之使用order by 依照指定顺序排序或自己定义顺序排序
- 程序猿应该了解的内容以及程序猿如何强迫自己学习(思考篇)
- T-sql 学习(2) - join与group by
- 为什么这个SQL Server DBA学习PowerShell--SQL任务
- SQL的详细语法介绍——对于学习数据库最基础知识[转]