2013-03-23 82 views
0

鉴于这种简单的模式:当您加入“或”或SQL时会发生什么?

create table A(pk int primary key, R1 int, R2 int); 
create table B(pk int primary key); 

如果我做下面的查询和使用OR,如下图所示加入到底会发生什么?

select * 
from A 
join B 
on A.R1 = B.pk or A.R2 = B.pk 

我感兴趣的是下面的情况:

如果一个行存在,其中R1和R2指向不同的PK B中?作为连接的结果,最终是否有多条记录?或者它只是默认在or的左侧,并且与A.R1 = B.pk匹配?


PS:我在平板电脑上阅读代码,并没有一个数据库,以测试它,所以请不要告诉我运行它自己:)我试着用搜索引擎,但没有找到确切的情况。

+1

您将以A的重复记录结尾。 – 2013-03-23 18:18:28

回答

2

你得到两行。

如果你有互联网,你总是有一个数据库手SQL Fiddle - 链接是对你的问题的答案。

+0

真棒,谢谢你。我完全忘了SQL小提琴;有人在几个月前给我看了。我将不得不开始使用它:) – 2013-03-23 18:21:39

相关问题