在备件表中,行的唯一性由 Material 名称和 Material 编号的组合给出,我想要做的是获取现在可用的备件总数。
我尝试过使用 count(distinct ...) 但它只适用于一个字段,而不是两个字段。
带有内部查询的 SQL 查询(使用 hibernate 查询语言)如下所示:
select count(*) from (
select distinct materialName, materialNo from SparePart
) as col
最佳答案
使用子查询+group by,然后过滤代表特定组的第一个ID,最后计算所有与过滤器匹配的ID:
SELECT COUNT(sp2) FROM SparePart sp2 WHERE EXISTS
(SELECT sp.materialName, sp.materialNo
FROM SparePart sp
GROUP BY sp.materialName, sp.materialNo
HAVING MIN(sp.id)=sp2.id)
关于使用 2 个字段的 Hibernate 计数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049799/