我想完成的是:
我想加入两个网址表。但其中一个表的url格式与另一个表稍有不同。因为它们是两个表之间唯一的共同点(没有唯一的id可以加入),所以我必须使用通配符来匹配url。
例如,一个表的格式如下:“www.url.com”、“url.com.”、“abc.def.url.com”,而另一个表的格式为“url.com”
所以为了匹配我需要做些

LEFT JOIN t1
ON t1.url = '%.'||t2.url OR t1.url= t2.url||'.' OR etc...

这是正确的方法吗?
我在用PostgreSQL。

最佳答案

在加入url时,有一个非常严格的约束。url.com应与url.com匹配,www.url.com应与url.com匹配,但www.dummyurl.com不应与www.myurl.com匹配。原来的查询很好,是解决问题的正确方法。
为了避免过度匹配,建议使用

select * from t1 inner join t2
on t1.url like '%.'||t2.url or t1.url = t2.url

我使用了内部连接来避免空匹配Here's a demo
这假设t2.url在一个句点后位于t1.uel的末尾,或者两者严格匹配。试着运行这个,看看你是否得到了预期的结果

关于sql - 在多个OR条件下联接2个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31685943/

10-16 15:19
查看更多