Как выбрать запись, если она равна какой-либо записи столбца из другой таблицы? - PullRequest
1 голос
/ 16 октября 2019

У меня есть таблица с адресами, которые были разделены пробелами в разные столбцы. Поскольку названия улиц могут быть составлены из 1-2-3 и т. Д. Частей, улицы достаточно размещены в разных столбцах. У меня есть список возможных улиц достаточно, и я хочу проверить столбцы и выбрать записи, которые соответствуют любой из улиц достаточно.

Например, если у меня есть таблица типа:

C1     C2     C3     C4 
------------------------
Abbey  road
Made   up     street
Some   Other  Weird  lane
Time   square

А также у меня есть таблица, содержащая «список» возможных суффиксов:

C5
--------
avenue
road
street
way
lane
square
drive
boulevard
etc...

Я хотел бы иметь что-то вроде этого:

C5
--------
road
street
lane
square

Есть ливозможный способ сделать это? Я искал похожие вопросы, но не мог их найти.

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Вы можете получить совпадения, используя join:

select t.*, l.c5
from table1 t1 join
     list l
     on l.c5 in (t1.c1, t1.c2, t1.c3, t1.c4);

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

В данных образца, вы можете захотеть соответствовать только последнему столбцу 1008 *. Если так:

select t.*, l.c5
from table1 t1 join
     list l
     on l.c5 = coalesce(t1.c4, t1.c3, t1.c2, t1.c1);
0 голосов
/ 16 октября 2019

Вы можете объединить две таблицы, используя IN в качестве условия:

SELECT *
FROM table_1 t1
JOIN table_2 t2
  ON t2.C5 IN (t1.c1, t1.c2, t1.c3, t1.c4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...