你可以使用sql like()函数进行表连接吗?

时间:2011-02-28 11:33:04

标签: mysql sql

假设我有两个表,每个表都有一个字符串列(名称)。我想做一个从t1到t2的左外连接,其中t1.name喜欢%t2.name%或t2.name喜欢%t1.name%

是可能的吗?

4 个答案:

答案 0 :(得分:3)

where子句中的任何内容都可以包含在on子句中,例如:

select  *
from    t1
left join  
        t2
on      t1.name like '%' + t2.name + '%'
        or t2.name like '%' + t1.name + '%'

答案 1 :(得分:2)

不确定。你可以这样做:

... where t1.name like '%' + t2.name + '%'

答案 2 :(得分:2)

是。来自JOIN Syntax

上的MySQL文档
  

与ON一起使用的conditional_expr是的任何条件表达式   可以在WHERE中使用的表单   子句。

答案 3 :(得分:1)

Andomar指出,on子句和where子句之间没有太大区别。

但是,在大多数情况下,在连接上使用like都是不好的做法,因为它可能(并且会)导致意外结果。例如,如果两个表的行具有名称A, Ab, AbcAbcd,则生成的左连接将不会只有 4 行,因为它基本上匹配第一行的每一行表格与第二个表格中的每个for,你将获得 16 结果,而不是4。