MySQL中如何结合JOIN使用LIKE查询?解决关联匹配问题
解决方案
你的问题出在JOIN的匹配条件上:原查询用ts.text = tf.text做等值匹配,只会返回两个表text字段完全一致的记录,自然无法匹配night of the day这类包含night的内容。
修改思路是把JOIN的匹配逻辑改成「tax_first的text值被包含在tax_second的text值中」,具体SQL如下:
SELECT ts.*, tf.* FROM tax_second ts JOIN tax_first tf ON ts.text LIKE CONCAT('%', tf.text, '%')
补充说明:
- 这里用
CONCAT('%', tf.text, '%')动态拼接模糊匹配通配符,确保tf的text值作为子串出现在ts的text里。 - 如果tax_first表中存在重复的text值(比如你的例子里两条
night),查询结果会出现重复记录。如果需要去重,可以添加DISTINCT:SELECT DISTINCT ts.*, tf.* FROM tax_second ts JOIN tax_first tf ON ts.text LIKE CONCAT('%', tf.text, '%') - 原查询中的
WHERE ts.text Like '%night%'可以去掉,因为JOIN条件已经实现了匹配逻辑;如果你的需求就是只关注包含night的ts数据,也可以保留该条件。
内容的提问来源于stack exchange,提问作者amit
相关产品推荐
相关产品推荐

