用jpql在做统计时经常要用到去掉重复项,一般都会想到用count和distinct来给合,但我根据《Enterprise JavaBeans 3.0》上第195页上的写去实现时是无法实现去除重复项的。在经过几次实验之后,发现这样修改是可以实现去除重复项的功能。
select count(distinct s) from Series s left join s.params mp left join s.categories c....(此处为jpql,并非transcat sql后面有些条件我省略了)
《Enterprise JavaBeans 3.0》上第195页上的写法是:select distinct count(c.address.zip) from customers as c where c.address.zilp like '554%'
后者可能是作者的笔误,前都更符合Transcat sql的写法,另外,在jpql中count与ditinct组时distinct后的字段不能有括号,如count(distinct s)改为count(distinct (s))就会报错。但在transcat sql中count(distinct (s))是合法的。