新手到SQL。请帮助。
我需要计算多个模式中其中一个字段中具有模式的记录数。我知道如何为一个模式执行此操作,但是当子查询中存在多个模式时,如何获取每个模式的计数。 我正在使用Oracle。我将尝试用一个例子来解释。
SELECT count(*) FROM TableA
WHERE
TableA.comment LIKE '%world%';
现在,此代码将返回TableA.comment字段中任何位置具有“world”的记录数。我的情况是,我有第二个查询返回了一个类似'world'的模式列表。我如何得到每个模式的计数?
我的最终结果应该是2列,第一列模式,第二列count_of_pattern。
答案 0 :(得分:8)
您可以使用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
没有通配符。如果是,那么您不需要进行连接。
这也使用left outer join
,以便即使没有匹配也会返回所有模式。