mysql加入查询喜欢吗?
Posted
技术标签:
【中文标题】mysql加入查询喜欢吗?【英文标题】:mysql join query with like? 【发布时间】:2015-10-07 20:13:55 【问题描述】:这是我的数据库结构的表示,带有几个示例行。我试图完成的是从表 1 中获取地址并在表 2 中搜索类似的匹配项。然后我只需要它返回子列结果
Table 1
id | address | info
----------------------------------------
1 | 123 test dr | blah blah blah
2 | 456 testing ln | blah blah blah blah
Table 2
id | wo | addr | sec | sub
------------------------------------------------
1 | 12345678 | 123 TEST DR | Sec. 1 | Sub1
2 | 87654321 | 456 TESTING LN | Sec. 2 | Sub2
我尝试了一些连接查询,但我似乎无法让它工作
【问题讨论】:
“子列结果”?嗯?您可以使用任何类型的条件加入,例如join foo on bar.x like foo.y
您可以发布您尝试过的查询吗?
tablescan 天堂在这里
为什么需要使用LIKE
?看起来这两个表中的地址完全匹配(除了大小写不同,mysql 通常会忽略)。
来自您提供的数据样本-您确定命令是您需要的吗?在我看来 UPPER()
是您加入表格所需要的
【参考方案1】:
尝试使用类似的东西:
select t2.sub
from Table1 t1
left join Table2 t2 on t2.add like CONCAT('%', t1.address,'%')
【讨论】:
加入带有前导通配符的条件将是各种低效...【参考方案2】:这不是最好的主意,但就像学习 mysql 选项的过程一样,您可以看看我的方法:
http://sqlfiddle.com/#!9/e4962/2
SELECT t1.*, t2.*
FROM Table1 t1
LEFT JOIN Table2 t2
ON t1.address LIKE CONCAT('%',t2.addr,'%');
【讨论】:
以上是关于mysql加入查询喜欢吗?的主要内容,如果未能解决你的问题,请参考以下文章