什么是拉链连接?你有没有听说过,或成对加入?

Mer*_*ith 10 sql database scala slick

Slick的文档页面的这一部分很奇怪.

什么是拉链连接?它说它意味着:

两个查询的成对连接

但这意味着什么@.@我不知道

我已经尝试使用谷歌搜索"zip join"和"pairwise join"...但没有结果与数据库.

当我搜索"成对"时,我确实从维基百科得到了这个 ...


有人能举例说明拉链连接和普通外连接或内连接之间的区别吗?谢谢!

Ano*_*non 14

Zip连接仅在讨论有序集时才有意义.您将根据行号加入,而不是根据列的值进行连接.

表格1

[?]  [color] 
400  violet 
415  indigo 
475  blue   
510  green  
570  yellow 
590  orange 
650  red    
Run Code Online (Sandbox Code Playgroud)

表2

[flame]  [element]
green    boron
yellow   sodium
white    magnesium
red      calcium
blue     indium
Run Code Online (Sandbox Code Playgroud)

表1 INNER JOIN表2 ON [颜色] = [火焰]:仅匹配行

[?]  [color]  [flame]  [element]
475  blue     blue     indium 
510  green    green    boron
570  yellow   yellow   sodium
650  red      red      calcium
Run Code Online (Sandbox Code Playgroud)

表1 OUTER JOIN表2 ON [颜色] = [火焰]:所有行,尽可能匹配

[?]  [color]  [flame]  [element]
400  violet   NULL     NULL
415  indigo   NULL     NULL
475  blue     blue     indium
510  green    green    boron
570  yellow   yellow   sodium
590  orange   NULL     NULL
650  red      red      calcium
NULL NULL     white    magnesium
Run Code Online (Sandbox Code Playgroud)

Table1"zip join"到Table2:所有行,无论匹配如何

[?]  [color]  [flame]  [element]
400  violet   green    boron
415  indigo   yellow   sodium
475  blue     white    magnesium
510  green    red      calcium
570  yellow   blue     indium
590  orange   NULL     NULL
650  red      NULL     NULL
Run Code Online (Sandbox Code Playgroud)

Zip连接将数据组合成拉链,将一个表中的第一行与另一个表中的第一行配对,第二行与第二行配对,等等.实际上并没有查看该数据.它们可以非常快速地生成,但除非您的数据中已存在某些有意义的顺序,或者您只想生成随机配对,否则它们不会有任何意义

  • 它是如何实施的?生成什么SQL? (2认同)