假设我有两个表,每个表都有一个字符串列(名称)。我想做一个从t1到t2的左外连接,其中t1.name喜欢%t2.name%或t2.name喜欢%t1.name%
是可能的吗?
答案 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, Abc
和Abcd
,则生成的左连接将不会只有 4 行,因为它基本上匹配第一行的每一行表格与第二个表格中的每个for,你将获得 16 结果,而不是4。