3

SQL 新手。请帮忙。

对于多个模式,我需要计算在其中一个字段中具有模式的记录数。我知道如何为一个模式执行此操作,但是当子查询有多个模式时,如何计算每个模式的计数。我正在使用甲骨文。我将尝试用一个例子来解释。

SELECT count(*) FROM TableA
WHERE 
TableA.comment LIKE '%world%';

现在,此代码将返回 TableA.comment 字段中任何位置具有“世界”的记录数。我的情况是,我有一个第二个查询,它返回一个模式列表,如“世界”。我如何获得每个模式的计数?

我的最终结果应该只是 2 列,第一列模式,第二列 count_of_pattern。

4

1 回答 1

10

您可以使用like将子查询加入表:

SELECT p.pattern, count(a.comment)
FROM (subquery here that returns "pattern"
     ) p left outer join
     TableA a
     on a.comment like '%'||p.pattern||'%'
group by p.pattern;

这假定pattern没有通配符。如果是这样,那么您不需要进行连接。

这也使用 aleft outer join以便返回所有模式,即使没有匹配。

于 2013-08-05T02:27:13.127 回答