web-dev-qa-db-ja.com

MySQLはlikeを使用してクエリを結合しますか?

私はこれをかなり長い間機能させようとしましたが、うまくいかないようです、おそらくそれも不可能です、私がやりたいのは、このような私が見つけた例...

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

しかし、それはまったく機能していないようです。提供できるヘルプはすばらしいでしょう、ありがとう!

40
David

試して

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

MySQLは他のデータベースとは異なる方法で文字列の連結を行うため、アプリを移植する場合は、||は、別の回答でMichaelが言及したように、連結演算子として使用されます。ただし、この演算子はorを意味するため、MySQLでは機能しません。

82
Tor Valamo

代わりにこれはどうですか:

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

とにかく両方のテーブルからすべてを選択しているので、おそらくそこに到達するでしょう。

1
inkedmn
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でリクエストを制限する必要があります。そして、それがかかった時間を見てください。その後、(WHERE)と比較できます。 JOIN内で直接比較する場合、リストに2万個のアイテムがある場合、データベースを停止します。注意してください。)