JPA2:如何在两个ID之间进行计数

时间:2017-09-12 18:50:45

标签: mysql spring-boot jpa-2.0

我有Group表,其中包含列id,名称,时间戳。当组有更新时,时间戳也会用当前更新。

我正在尝试使用查询显示两个ID之间的组计数。

 Select Count(g) from Area.Group g where g.id between ?2 and ?3 order by g.timestamp desc

组表包含:

        id  name    timestamp
        ==  ====    ======================
        271 News    20170912123733302+0000
        272 Groups  20170831121326734+0000
        273 A law   20170906075010972+0000
        274 Test    20170906135003580+0000
        275 Topic   20170906135139874+0000
        276 Too     20170906135315684+0000
        299 Q       20170911110126882+0000
        300 R       20170911110254626+0000
        301 S       20170911113756910+0000
        302 T       20170911130306836+0000
        303 Test    20170911135557812+0000
        304 Tf      20170911135724170+0000
        305 Ifti    20170911140254131+0000
        306 Ghdu    20170911140358890+0000
        307 Gifts   20170911140751073+0000
        308 It      20170911140752881+0000
        309 E       20170912123713640+0000
        310 Ye      20170911162441817+0000
        311 Asd     20170912052132275+0000

通过使用两个id,我试图得到计数(顺序是按时间戳的降序)。例如,271和303之间的ID。我在这里看的计数是10。

        id  name    timestamp
        ==  ====    ======================
        271 News    20170912123733302+0000
        309 E       20170912123713640+0000
        311 Asd     20170912052132275+0000
        310 Ye      20170911162441817+0000
        308 It E    20170911140752881+0000
        307 Gifs    20170911140751073+0000
        306 Ghdu    20170911140358890+0000
        305 Ifti    20170911140254131+0000
        304 Tf      20170911135724170+0000
        303 Test    20170911135557812+0000

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

组是一个保留字,你应该避免用这些单词命名表,但是如果你需要那么这个单词应该在backtics里面

Select Count(*) from `Group` g where g.id between ?2 and ?3 order by g.timestamp desc

更正GROUP列名后,与between

的使用相关的方面仍然存在

注意:对SELECT结果的ORDER BY工作不执行过滤器..所以你必须计算原始原始表数据上271和303之间的行数。 使用列where ... between上的g.id表示值的序列在g.id列上进行评估,与您选择的顺序无关。 事实上,在您的样本中查找由g.id排序的值,您有11行