【问题标题】:Eliminate subquery in the FROM clause消除 FROM 子句中的子查询
【发布时间】:2013-02-18 16:33:40
【问题描述】:

标记表有 3 列:id(主键)、tagresource

我想选择与至少 3 个资源关联的标签。一个资源可以与同一个标签关联多次,因此单个 GROUP BY 是不够的。

我当前的 SQL 查询如下:

SELECT tag FROM
(SELECT resource, tag FROM tagging GROUP BY resource, tag) AS tagging
GROUP BY tag HAVING count(*) > 2;

我需要在HQL中转换这个请求,而HQL不接受FROM子句中的子查询。

是否有一种(快速)方法可以在不使用子查询或在 WHERE 子句中使用子查询的情况下做同样的事情?

谢谢

【问题讨论】:

  • 您的文字显示“至少 2”您当前的查询是 > 2。是哪个?
  • 你是对的,我纠正了它,虽然这并不重要。

标签: sql hql


【解决方案1】:

要查找与您可以使用的超过 2 个不同资源相关联的标签

SELECT tag
FROM   tagging
GROUP  BY tag
HAVING count(DISTINCT resource) > 2; 

【讨论】:

  • 谢谢,太好了。如果我只想计算标签至少出现 3 次的资源(通过在子查询中添加 HAVING count(*) > 2)怎么办?
猜你喜欢
  • 2021-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
相关资源
最近更新 更多