加入非关键属性

时间:2014-11-24 14:49:17

标签: sql database join

加入非关键属性的含义是什么? 有什么例子吗?

我只知道使用另一个表的主键连接一个表的外键的情况。

这是连接关键属性的情况,不是吗?

那么加入非关键属性的情况是什么?

http://en.wikipedia.org/wiki/Join_(SQL) 这里的例子就像我上面提到的那样。

1 个答案:

答案 0 :(得分:1)

  

我只知道使用另一个表的主键连接一个表的外键的情况。

是的,这是最常见且最优化的一个。但是,它不是唯一的:您可以根据任意条件使用连接“连接”到另一个表(甚至同一个表)中的行。

这是一个非等值的简单例子:

insert into shirt_size (size_from, size_to, size_code) values (18, 19, 'Small');
insert into shirt_size (size_from, size_to, size_code) values (20, 21, 'Medium');
insert into shirt_size (size_from, size_to, size_code) values (22, 23, 'Large');
insert into shirt_size (size_from, size_to, size_code) values (24, 25, 'XL');

SELECT g.name, s.size_code
FROM guest g
LEFT OUTER JOIN shirt_size s ON g.size >= s.size_from AND g.size <= s.size_to

您也可以使用BETWEEN运算符来表示条件:

SELECT g.name, s.size_code
FROM guest g
LEFT OUTER JOIN shirt_size s ON g.size BETWEEN s.size_from AND s.size_to

在这两种情况下,加入都发生在连接条件两侧的非键属性上。