我有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
非常感谢任何帮助。
答案 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行