Запрос на присоединение к MySQL с использованием like?

Я пытался заставить это работать уже довольно давно, но это просто не работает, может быть, это даже невозможно, я хочу выполнить запрос на соединение MySQL, используя подобное, например это пример нашел...

SELECT *
FROM Table1
INNER JOIN Table2 ON Table1.col LIKE '%' + Table2.col + '%'

но, похоже, это вообще не работает, любая помощь, которая может быть оказана, была бы блестящей, спасибо!


person David    schedule 18.12.2009    source источник


Ответы (3)


Пытаться

SELECT *
FROM Table1
INNER JOIN Table2 ON Table1.col LIKE CONCAT('%', Table2.col, '%')

MySQL выполняет конкатенацию строк иначе, чем в других базах данных, поэтому, если вы хотите перенести свое приложение, вам нужна альтернативная версия, в которой || используется в качестве оператора конкатенации, как упоминалось Майклом в другом ответе. Однако этот оператор не работает в MySQL, поскольку означает or.

person Tor Valamo    schedule 18.12.2009
comment
хорошо, теперь работает, но он возвращает только несколько строк, когда должен возвращать намного больше, как будто он использует только первую строку из таблицы1? - person David; 19.12.2009
comment
Я понимаю, что этот пост довольно старый, однако, когда я заменяю столбец в функции concat строкой, результаты увеличиваются в четыре раза. Есть идеи, почему? - person ShoeLace1291; 28.06.2018

Как насчет этого вместо этого:

SELECT * FROM Table1, Table2 WHERE Table1.col LIKE '%'+Table2.col+'%';

Поскольку вы все равно выбираете все из обеих таблиц, это, вероятно, приведет вас туда.

person brettkelly    schedule 18.12.2009

SELECT p.products_id, pd.products_name, p.products_model
FROM products_description pd
JOIN products p ON p.products_id = pd.products_id
WHERE pd.products_name LIKE CONCAT( '%', p.products_model, '%' )
LIMIT 0 , 100

Во-первых, вы должны ограничить свой запрос (p.products_id = pd.products_id) и LIMIT. И посмотрите, сколько времени это заняло. После этого вы можете пойти и сделать сравнение с (ГДЕ). Если вы собираетесь сравнивать непосредственно в JOIN, вы поставите свою базу данных, если в списке будет 20 тысяч элементов. Остерегаться.)

person Александр Тарасов    schedule 14.07.2018