Соединить две таблицы при определенных условиях - PullRequest
1 голос
/ 17 мая 2019

Мне нужна помощь в соединении двух таблиц с определенным условием. Я хочу присоединиться к Таблице_1 с Таблицей_2 в ближайшей Таблице_A.Col_A <= Table.Col_B </p>

Итак, у меня есть две таблицы

Table_1
Col_A
1
2
6 

Table_2
Col_A | Col_B
1     | p1
4     | p2
5     | p3

Result Table
Col_A | Col_B
1     | p1
2     | p1
6     | p3

Ответы [ 3 ]

1 голос
/ 17 мая 2019

Коррелированный подзапрос обрабатывает это:

select t1.col_a,
       (select t2.col_b
        from table2 t2
        where t2.col_A <= t1.col_A
        order by t2.col_A desc
        limit 1
       )
from table1 t1;
0 голосов
/ 17 мая 2019

Вы можете поместить условие в предложение ON следующим образом:

select 
  t1.Col_A, t2.Col_B 
from Table_1 t1 left join Table_2 t2
on t2.Col_A = (select max(Col_A) from Table_2 where Col_A <= t1.Col_A)

См. Демоверсию .Результаты:

| Col_A | Col_B |
| ----- | ----- |
| 1     | p1    |
| 2     | p1    |
| 6     | p3    |
0 голосов
/ 17 мая 2019

Я бы попробовал сделать что-то вроде этого.

SELECT DISTINCT t1.col1, t2.col2
FROM Table_1 t1 JOIN Table_2 t2 on t1.col1 <= t2.col1
WHERE --something matches

Однако информации в этом посте не так много, более подробные сведения, которые вы можете предоставить, позволят нам помочь вам лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...