MySQL присоединиться к запросу, используя как? - PullRequest
40 голосов
/ 19 декабря 2009

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

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

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

Ответы [ 3 ]

81 голосов
/ 19 декабря 2009

Попробуйте

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

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

1 голос
/ 19 декабря 2009

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

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

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

0 голосов
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 тысяч предметов. Осторожно.)

...