作者grence (多想两分钟 = =")
看板Database
标题Re: [SQL ] 想请问合并查询?
时间Sun May 13 01:43:44 2007
※ 引述《jimwayne123 (曼陀罗)》之铭言:
: 刚刚研究了一阵子的 Join,可是感觉好像跟需要的行为不太一样@@
: 小弟是用 M$-SQL,有三个 table 里面共同都有 create_date 跟 owner 两个栏位
: (三个 table 的栏位命名不一样,但是意思是一样的@@)
: 因为需要抓出三个 table 中某个 owner 的 create_date 的最大值
: (即最新加入的资料列..)
: 想请问大大们,有没有办法直接用某种 SQL 叙述式
: 把三个 table 中 owner='abc' 的所有资料列都抓出来
: 列成像是↓这个样子呢?@@..
: -----------------------
: | owner | create_date |
: -----------------------
: | abc | 2007/01/01..|
: -----------------------
: | abc | 2007/01/02..|
: .
: .
: | abc | 2007/05/10..|
: -----------------------
: 就是想把某个使用者的所有 create_date 结合成一张 table
: 然後用 MAX() 对查询结果的 table 直接抓出最新的时间出来..m(_ _)m
: 原本有分别对三张 table 找出最大值
: 可是找出三张 table 最新的 create_date 後
: 又不知道该怎麽把取出的字串做比较,比出三个值里谁最新...Orz
join想成是横向的栏位扩展
比如三张表 a, b, c
你需要的结果是:
a.owner, a.create_date, b.owner, b.create_date, c.owner, c.create_date
这时候才是join
union是直向的列联合,你要的是这个。
select max(create_date) from a group by owner
union all
select max(create_date) from b group by owner
union all
select max(create_date) from c group by owner
...
select max(date) from
(
select max(create_date) date from a group by owner
union all
select max(create_date) from b group by owner
union all
select max(create_date) from c group by owner
) tt
这段大概能动吧,大概....
by the way, M$的 union all比 union快,两者的差别嘛… google
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.169.40.94
※ 编辑: grence 来自: 218.169.40.94 (05/13 01:46)