#sql #join
Вопрос:
У меня есть две таблицы A и B, и я хотел бы, чтобы таблица A присоединилась к таблице B слева на основе двух условий.
- Если параметр 1=»a» в таблице B, то слева присоединяйтесь к A. параметр 2=B. параметр 2
- Если параметр1<>’a’ в таблице B, то левое соединение A. параметр3=B. параметр3
как сделать это условное соединение в SQL?
Я использовал левое соединение B в случае, когда B. 1=»a» , затем A. 2=B. 2, когда B. 1<> «a» , затем A. 3=B. 3
У него всегда есть ошибка рядом с»=».
Комментарии:
1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Ответ №1:
Вы можете просто использовать логику:
from a left join
b
on (b.1 = 'a' and a.2 = b.2) or
(b.1 <> 'a' and a.3 = b.3)
Единственное предупреждение: or
как правило, снижает производительность join
s, поэтому это может замедлить ваш запрос (очень сильно!) по сравнению с каждым условием в отдельности.