分享
 
 
 

join 使用详解方式

王朝other·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

join 方式

(1) cross join

参与select语句所有表的的所有行的笛卡尔乘积

select au_lname ,title

from authors cross join titiles

outer join 对参与join的两个表有主从之分,处理方式以主表的每条数据去match 从属表的列,合乎条件的数据是我们所要的答案,不合乎条件的也是我们要的答案,只不过哪些从属表选取的列将被添上null。

(2) left join

左边的为主表,右边为从属表

select a.cust_id ,b.order_date,b.tot_ant

from customer a left join sales b

on (a.cust_id =b.cust_id and b.order_date>''1996/10/15'')

可以写为

select a.cust_id,b.order_date,b.tot_ant

from custom a

left join (select * from sales where order_date>''1996/10/15'') b

on a.cust_id =b.cust_id

(3) right join

左边的表为从属表,右边的表为主表

(4) self join

self join 常用在同一表内不同数据间对同一列的比较

select a.emp_no,a.emp_name,b.emp_no,b.emp_name,a.date_hired

from employee a

join employee b

on (a.emp_no!=b.emp_no and a.date_hired=b.date_hired)

order by a.date_hired

这样会重复数据,只要加上一句 and a.emp_name>b.emp_name

(5) full join

不仅列出符合条件的数据,两边未符合join条件的数据也会一并列出。哪些未符合join条件的数据如果在select列中无法得到对应的值则填上null

select a.cust_id,b.tot_amt

from customer a full join sales b

on a.cust_id=b.cust_id

有表

id ic name amount

I * *

c

i

c

i

i

要求结果为

ic name amount ic name amount

i c

i c

i

i

select aaa.*,bbb.*

from ( select (select count(id) from aa as b where (b.id<a.id) and (ic=''i'')) as newid, * from aa a where ic=''i'') aaa

full join

(select (select count(id) from aa as b where b.id<a.id and ic=''c'') as newid,* from

aa a where ic=''c'') bbb

on aaa.newid=bbb.newid

order by aaa.name

6.使用 HASH 和 MERGE 联接提示

此示例在 authors、titleauthors 和 titles 表之间建立三表联接,以生成一个作者及其著作的列表。查询优化器使用 MERGE 联接将 authors 和 titleauthors (A x TA) 联接在一起。然后,将 authors 和 titleauthors MERGE 联接 (A x TA) 的结果与 titles 表进行 HASH 联结以生成 (A x TA) x T。

重要 指定联接提示后,要执行 INNER JOIN 时 INNER 关键字不再为可选,而必须显式说明。

USE pubs

SELECT SUBSTRING((RTRIM(a.au_fname) + '' '' + LTRIM(a.au_lname)), 1, 25)

AS Name, SUBSTRING(t.title, 1, 20) AS Title

FROM authors a INNER MERGE JOIN titleauthor ta

ON a.au_id = ta.au_id INNER HASH JOIN titles t

ON t.title_id = ta.title_id

ORDER BY au_lname ASC, au_fname ASC

下面是结果集:

Warning: The join order has been enforced because a local join hint is used.

Name Title

------------------------- --------------------

Abraham Bennet The Busy Executive''s

Reginald Blotchet-Halls Fifty Years in Bucki

Cheryl Carson But Is It User Frien

Michel DeFrance The Gourmet Microwav

Innes del Castillo Silicon Valley Gastr

... ...

Johnson White Prolonged Data Depri

Akiko Yokomoto Sushi, Anyone?

(25 row(s) affected)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有