SQL 查询:连接、子查询与性能优化
1. 非等值连接的应用
非等值连接在实际场景中有广泛的应用,下面通过两个具体例子来详细说明。
1.1 匹配情侣问题
在匹配情侣的场景中,我们可以使用交叉连接和内连接来生成可能的情侣组合。
- 交叉连接结果 :
| guy | girl |
| — | — |
| Neil | Terresa |
| Neil | Mary |
| Trevor | Terresa |
| Trevor | Mary |
- 内连接查询示例 :
SELECT
M.candname AS Guy,
F.candname AS Girl
FROM
Candidates AS M
JOIN
Candidates AS F ON M.gender > F.gender
此查询同样能得到与交叉连接类似的结果,确保了男女配对且男性在第一列。
1.2 薪资水平场景
在 Leo 的乳胶公司,员工的薪资水平由其职能和与老板的关系决定。我们可以通过创建 Salarylevels
表,并使用 BETWEEN
谓词来匹配员工的薪资水平。
- 创建 Salarylevels
表 :