Oracle SQL选择类似行的值

时间:2016-11-25 14:12:53

标签: sql oracle

所以我有两张桌子:

节日表:列 NAME

---------------------
NAME
---------------------
1. ultra music
2. coachella

和Querydata列: QUERY

----------------------
QUERY
----------------------
1. xyz
2. coachella festival
3. abc
4. ultra music festival

所以我想计算querydata表中每个节日的所有出现次数。

我的意思是我可以通过Querydata表格搜索每个节日名称,但我真的很想找到方便的方法。

SELECT QUERY FROM QUERYDATA 
WHERE QUERY LIKE '%coachella%'
AND QUERY LIKE '%festival%'

请帮助我,我真的被困在这一个! 干杯

2 个答案:

答案 0 :(得分:2)

你可以这样做:

select f.name, count(*)
from querydata qd join
     festivals f
     on qd.query like '%' || f.name || '%'
group by f.name;

注意:这假设名称没有重叠。 "圣诞"和#34;平安夜"可能导致意外的重复。

答案 1 :(得分:0)

使用其他答案中提到的likeinstr,如下所示:

select t1.name, count(*) 
 from festival t1 inner join Querydata t2 on instr(t2.query, t1.name) > 0 
  group by t1.name;