sql - 消除 FROM 子句中的子查询

标签 sql hql

标记表有 3 列:id(主键)、标签资源

我想选择与至少 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 个以上不同资源关联的标签,您可以使用

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

关于sql - 消除 FROM 子句中的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14940954/

相关文章:

指定限制的 SQL 最大值

数据库; GROUP BY 但仅当列不为空时

c# - GetSqlValues 是否获取隐藏字段?

java - 由 : org. hibernate.TransientObjectException : The given object has a null identifier: com. models.User on hibernate update 引起

java - hibernate HQL : Left Join with OnetoOne

java - 通过 HQL 检索多对多集合和属性

mysql - mySql 存储过程的语法错误

php - SQL:显示来自数据库的最后消息

regex - 提取包含字段的行的 HQL 函数仅包含数字

hibernate - HQL中的CreateSQLQuery是否独立于数据库