Можете ли вы использовать функции sql like () для объединения таблиц? - PullRequest
0 голосов
/ 28 февраля 2011

Предположим, у меня есть две таблицы, каждая с одним строковым столбцом (имя). Я хотел бы сделать левое внешнее соединение от t1 до t2, где t1.name как% t2.name% или t2.name как% t1.name%

возможно ли что-то подобное?

Ответы [ 4 ]

3 голосов
/ 28 февраля 2011

Почти все, что входит в предложение where, также может входить в предложение on, например:

select  *
from    t1
left join  
        t2
on      t1.name like '%' + t2.name + '%'
        or t2.name like '%' + t1.name + '%'
2 голосов
/ 28 февраля 2011

Да.Из документов MySQL о Синтаксис JOIN

Условное_expr, используемое с ON, - это любое условное выражение формы, которое можно использовать в предложении WHERE.

2 голосов
/ 28 февраля 2011

Конечно.Вы можете сделать это так:

... where t1.name like '%' + t2.name + '%'
1 голос
/ 28 февраля 2011

Как отметил Андомар, между предложением on и предложением where нет большой разницы.

Однако использование like в соединении было бы плохой практикой в ​​большинстве сценариев, так какэто может (и будет) приводить к неожиданным результатам.Например, если в двух таблицах есть строки с именами A, Ab, Abc и Abcd, результирующее левое объединение не будет иметь только 4 строк, поскольку оно будет соответствовать практически каждой строке в первой таблице с каждым значением forвторая таблица, и вы получите 16 результаты вместо 4.

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