2013-03-23 2 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 указывают на различные первичные ключи в B? Должен ли я заканчивать несколько записей в результате соединения или просто по умолчанию для левой стороны и/или совпадения с A.R1 = B.pk?


PS: Я читаю код на планшете и не имеют БД, чтобы проверить его, поэтому, пожалуйста, не говорите мне, чтобы запустить его сам :) Я пробовал прибегая к помощи, но не нашел точная ситуация.

+1

Вы получите дубликаты записей от A. –

ответ

2

Вы получаете две строки.

Если у вас есть Интернет, у вас всегда есть база данных для связи SQL Fiddle - ссылка на ответ на ваш вопрос.

+0

Удивительный, спасибо человеку. Я совсем забыл о SQL Fiddle; кто-то показал мне это несколько месяцев назад. Я должен буду начать использовать его :) –

Смежные вопросы