1
联接对非关键属性的含义是什么? 有没有例子?加入非关键属性
我只知道用另一个表的主键连接一个表的外键的情况。
这是加入关键属性的情况,不是吗?
那么连接非关键属性的情况如何?
http://en.wikipedia.org/wiki/Join_(SQL) 这里的例子就像我上面提到的那样。
联接对非关键属性的含义是什么? 有没有例子?加入非关键属性
我只知道用另一个表的主键连接一个表的外键的情况。
这是加入关键属性的情况,不是吗?
那么连接非关键属性的情况如何?
http://en.wikipedia.org/wiki/Join_(SQL) 这里的例子就像我上面提到的那样。
我只知道用另一个表的主键连接一个表的外键的情况。
对,这是最常见和最严重优化的一个。但是,它不是唯一的:您可以使用连接根据任意条件“连接”到另一个表(甚至是同一个表中的行)中的行。
这里是不等值连接的一个简单的例子:
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
在这两种情况下,在非关键属性结合发生在两边的连接条件。
您可能想解释为什么您认为“通过非关键属性进行连接”有任何特殊之处。你从哪里得到这句话?该消息来源对这些联合还有什么看法? – Tomalak 2014-11-24 15:03:27
请参阅[此答案](https://stackoverflow.com/a/23842061/3404097)。 – philipxy 2014-11-24 19:58:02