Как условно присоединиться к (1) полному ключу ИЛИ (2) части ключа, если первое условие не выполнено.Предположим, идентификатор состоит из 7 символов.
select
a.id,
coalesce (t.somevalue, t2.somevalue)
from a
left join t
on a.id=t.id
left join t as t2
on left(a.id,6)=left(t2.id,6)
Возможно ли вышеуказанное объединение за один выстрел?Что-то вроде этого, но поддержание приоритета соединения с полным ключом над соединением с ключом детали?
left join t
on
a.id=t.id OR left(a.id,6)=left(t2.id,6)
Интересно, есть ли что-то вроде
left join t
on
case when condition 1
case when condition 2
Вот пример данных и ожидаемые результаты.
+---------+
| a.id |
+---------+
| aaaaa0A |
| aaaaa0B |
| aaaaa1A |
| aaaaa2A |
| aaaaa3B |
+---------+
+---------+
| t.id |
+---------+
| aaaaa0C |
| aaaaa1B |
| aaaaa1A |
| aaaaa2B |
| aaaaa3A |
+---------+
+---------+---------+--------------+
| a.id | t.id | condition no |
+---------+---------+--------------+
| aaaaa0A | aaaaa0C | 2 |
| aaaaa0B | aaaaa0C | 2 |
| aaaaa1A | aaaaa1A | 1 |
| aaaaa2A | aaaaa2B | 2 |
| aaaaa3B | aaaaa3A | 2 |
+---------+---------+--------------+