SQL:使用通配符连接表

时间:2015-07-28 17:58:04

标签: postgresql join duplicates wildcard

当我加入2张桌子时

select t1.col1, t1.col2, t2.col3 
from t1
left join t2
on t1.col2=t2.col3

然后我没有得到任何重复的行。但是,当我尝试加入时 使用通配符的表:

select t1.col1, t1.col2, t2.col3 
from t1
left join t2
on t1.col2 like '%'||t2.col3

然后我会得到重复的值。我看到这篇文章是我认为的 把我带到某个地方,但我无法理解这个解决方案。

Joining 2 Tables using a wildcard

它说我可以使用exists来摆脱重复的值。我也 不太了解他的疑问。这是另一个查询 交:

select *
from tableA a
where exists (select 1 from tableB b where  a.id like '%' + b.id + '%');

select 1 from tableB做了什么? 我正在使用PostgreSQL

这是我尝试过的,即使我不理解它并仍然给我重复:

select t1.col1,t1.col2,t2.col3
from t1
left join t2
on t1.col2 like '%'||t2.col3 
where exists (select 1 from t2 where t1.col2 like '%'||t2.col3)

1 个答案:

答案 0 :(得分:0)

Use the DISTINCT clause:

SELECT DISTINCT t1.col1, t1.col2, t2.col3 
FROM t1
LEFT JOIN t2 ON t1.col2 LIKE '%'||t2.col3;