2015-02-23 6 views
0

Можно ли сделать следующее в SQL?SQL JOIN с OR

SELECT * FROM table1 INNER JOIN table2 ON (col1=col2 OR TRIM(col1)=TRIM(col2)) 

Или:

SELECT * FROM table1 INNER JOIN table2 USING (col1 OR col2) 
+4

Ну, вы пробовали? –

ответ

3

Вы можете использовать произвольную логику в объединении. Итак, чтобы ответить на ваш вопрос: да, вы можете использовать дизъюнкцию («ИЛИ») в соединении. Тем не менее, в вашем конкретном примере ваша логика - это тавтология - это всегда так - так ничего не получится избыточно.

Вам также не обязательно участвовать в равенстве. Например, мы можем имитировать функции по сравнению оконной величины:

select greatest.id, 
      greatest.val 
from  someTable greatest 
left join someTable greater 
on  greater.id = greatest.id 
and  greater.val > greatest.val 
where  greater.id is null; 

В то время как мой пример выше является довольно распространенным, я обнаружил, что очень редко использовать не Конъюнктивный соединяющие, за Ваш вопрос. Однако это, безусловно, можно сделать.

+1

Это не тавтология; он избыточен. 'col1' может быть не равным' col2'. –

+0

Да, вы правы: Плохо: P – Xophmeister