SQL将具有相同含义的不同列值分组
我的任务是在postgres中使用SQL查询将两列匹配在一起。在我的任务中,我需要使用相同的ID将两列名称不同但含义相同的列匹配在一起。下面我将对此进行说明: 表1SQL将具有相同含义的不同列值分组,sql,postgresql,Sql,Postgresql,我的任务是在postgres中使用SQL查询将两列匹配在一起。在我的任务中,我需要使用相同的ID将两列名称不同但含义相同的列匹配在一起。下面我将对此进行说明: 表1 name ,Group Terminal point 1 ,Terminal Terminal point town 1,Terminal Terminal point 2 ,Terminal Terminal point 3 ,Terminal 表2 Name
name ,Group
Terminal point 1 ,Terminal
Terminal point town 1,Terminal
Terminal point 2 ,Terminal
Terminal point 3 ,Terminal
表2
Name ,ID
Terminal 1,T01
Terminal 1,T01
Terminal 2,T002
Terminal 3,T0003
输出表
Name ,Group , ID
Terminal Point 1 , Terminal, T01
Terminal Point town 1 , Terminal, T01
Terminal Point 2 , Terminal, T002
Terminal Point 3 , Terminal, T0003
我尝试过使用GROUPBY和内部联接,以及ID的第一个和最后一个字符的substr,但我无法做到这一点,因为在PostgresSQL查询中不允许使用len。欢迎提出任何建议,并提前感谢 看起来这场比赛可能是这样的:
select t1.*, t2.id
from table1 t1 join
table2 t2
on t2.name = replace(name, 'point ', '');
至少,某种类型的字符串操作似乎是必要的。您可以像这样尝试
因此,您的查询应该是
select
*
from
table1 t1
join (select distinct * from table2) t2 on (to_tsvector(t1.name) @@ plainto_tsquery(t2.name))
select
*
from
table1 t1
join (select distinct * from table2) t2 on (to_tsvector(t1.name) @@ plainto_tsquery(t2.name))