Android 如何在一个select查询中使用“order by”和“count()

Android 如何在一个select查询中使用“order by”和“count(),android,count,android-contentresolver,mediastore,Android,Count,Android Contentresolver,Mediastore,android中的mediastore数据库中有一个名为images的表,images表有一个名为timetake的列,它表示图像的创建时间,以毫秒为单位 现在我有一个要求,我想按创建日期而不是时间对图像进行分组,并计算每天的图像,因此我尝试了以下查询: 选择datetake/86400000*86400000作为dateT,countdateT作为imageSumInDate 从图像 其中1=1 按日期分组 按日期说明订购 不幸的是,出现了一个错误: android.database.sqli

android中的mediastore数据库中有一个名为images的表,images表有一个名为timetake的列,它表示图像的创建时间,以毫秒为单位

现在我有一个要求,我想按创建日期而不是时间对图像进行分组,并计算每天的图像,因此我尝试了以下查询:

选择datetake/86400000*86400000作为dateT,countdateT作为imageSumInDate 从图像 其中1=1 按日期分组 按日期说明订购

不幸的是,出现了一个错误:

android.database.sqlite.SQLiteException:没有这样的列:dateT代码1

然后我向其他人询问问题,他给出了如下子查询样式:

选择Date,CountDate作为imageSumInDate 从中选择DateTake/86400000*86400000作为imagest中的日期 其中1=1 按日期分组 按日期说明订购

这可能是正确的,但我不能在ContentResolver的查询方法中使用此子查询。ContentResolver可能仅支持以下样式的查询:

select ____ from table where ______ order by____ 有什么技巧可以帮助我适应ContentResolver的查询风格吗

任何帮助都将不胜感激

试试这个:

SELECT datetaken/86400000*86400000 as dateT, count(datetaken) as imageSumInDate FROM images WHERE (1 = 1 ) GROUP BY (datetaken/86400000*86400000) ORDER BY datetaken/86400000*86400000 DESC
问题在于dateT列别名在ORDER BY子句的范围内无效。简单地重复dateT表达式而不是使用dateT别名就可以解决这个问题


编辑:从查询中删除对dateT列别名的所有引用。很明显,我应该这样做才能开始

它还可以通过一个技巧来解决,以适应ContentResolver的查询样式:

选择Date,CountDate作为imageSumInDate 从中选择DateTake/86400000*86400000作为图像中的日期,其中1=1t 按日期分组
ORDER BY dateT DESC

感谢您的回答,但仍然会出现相同的错误:没有这样的列:dateT,似乎dateT列别名在count函数的范围内无效。如果我将COUNTDATE作为imageSumInDate删除,它将被正确执行。问题是count表达式或groupby子句,而不仅仅是orderby。我已经更新了我的答案;请试一试。我已经试过了你的三个答案,结果都是相同的错误。如果我删除CountDate作为imageSumInDate,并使用SELECT DateTake/86400000*86400000作为图像中的Date,其中1=1 group by Date ORDER by Date DESC,运行正常,别名的计数范围似乎有问题,我的答案中当前的查询-选择DateTake/86400000*86400000作为dateT,CountDateTake as imageSumInDate FROM images,其中1=1 GROUP BY DATEAKED/86400000*86400000 ORDER BY DATEAKED/86400000*86400000 DESC-确实不应该引起关于dateT的任何错误,因为它在查询中的任何位置都不引用dateT,除非定义它。您确定执行该查询会引发有关Date的错误吗?是的,我确定。logcat只会说:06-27 11:10:16.480:W/System.err13417:android.database.sqlite.SQLiteException:没有这样的列:dateT代码1:,编译时:选择datetake/86400000*86400000作为Date,将日期计数为图像根据图像统计,其中1=1按拍摄日期分组/86400000*86400000按拍摄日期排序/86400000*86400000描述