对SQL开发者而言,JION是一个基本的组件,然而了解它们的真正作用的开发者却相对较少。许多开发者了解相等连接(equi-JOIN),它将表T1中的一个值与表T2中的一个值进行比较,就像这样:
SELECT * FROM T1 INNER JOIN T2 ON T1
这种SQL Sever开发只是JOIN应用的开始。首先你要意识到你可以用其它运算符来代替上面的等号。在多情况下,这没有多大用处,但你可以用<>替代等号(=),将T1中的一行与并不与T1中的值匹配的T2中的所有行连接起来。
范围查找是JOIN的一个更加有趣且实用的用法。在数千种业务流程,如税表、运输价格、学生成绩和保险费率中,范围查找都是最基本的应用。
不可能在查找表中发现任何给定的值,是这些情况下的根本理念。相反,查找表包含两栏:一栏中范围的最小基数(Floor),一栏是范围的最大基数(Ceiling)。列表A包含建立样本表的一个脚本。表1和表2中是样本行。
表1 RangeID
|
RangeID |
Floor |
Ceiling |
Rate |
|
1 |
0.00 |
1.99 |
5.0000 |
|
2 |
2.0 |
3.99 |
8.5000 |
|
3 |
4.0 |
6.99 |
11.0000 |
|
4 |
7.0 |
9.99 |
13.0000 |
|
NULL |
NULL |
NULL` |
NULL |
表2
|
ShipmentID |
Weight |
|
1 |
1.30 |
|
2 |
2.70 |
|
3 |
3.00 |
|
4 |
1.90 |
|
5 |
2.40 |
|
6 |
3.30 |
|
7 |
4.70 |
|
NULL |
NULL |
SQL要求对列表B中的数据执行查询,于是得到如图3所见的结果集。查询得到了你希望的结果。如上所述,这是一个直接SELECT查询,但你可以根据自己的需要,轻易地把它变成一个存储过程或一个参数化UDF。
|
ShipmentID |
Weight |
Floor |
Ceiling |
Rate |
|
1 |
1.30 |
0.00 |
1.99 |
5.00 |
|
4 |
1.90 |
0.00 |
1.99 |
5.00 |
|
2 |
2.70 |
2.00 |
3.99 |
8.50 |
|
3 |
3.00 |
2.00 |
3.99 |
8.50 |
|
5 |
2.40 |
2.00 |
3.99 |
8.50 |
|
6 |
3.30 |
2.00 |
3.99 |
8.50 |
|
7 |
4.70 |
4.00 |
6.99 |
11.00 |
这种方法有无数的应用,而且它比用WHERE谓语编写相应的SQL代码要容易得多。另外,在一个计算所得税范围的大型查找表中,你可以对最小基数(Floor)和最大基数(Ceiling)栏编写索引并提高性能,因为优化器能够利用这些索引,从而迅速找到相应的行。
- 相关阅读:
- ·虐心!看IT男教女友区分PC、Server、HPC
//server.zol.com.cn/553/5530375.html - ·变化何在?Server 2016 TP3 10537截图被爆
//server.zol.com.cn/541/5414876.html - ·新时代的来临 Server SAN不是昙花一现
//server.zol.com.cn/538/5386250.html - ·运维窍门:四种方法加快您的专用服务器
//server.zol.com.cn/538/5383067.html - ·中文版爆料!Win Server 2016技术预览版3
//server.zol.com.cn/537/5374782.html
推荐:12款超棒的乌班图 Linux GTK主题
Z拆机:杰和GCR2524MP-RF服务器图赏
2022龙芯生态大会专题
2021浪潮专题
宝德 NVIDIA 协同赋能,为您的AI之旅保驾护
OCP CHINA DAY 2019