gpt4 book ai didi

java - Android SQLITE - 未返回正确的数据?

转载 作者:行者123 更新时间:2023-12-01 12:47:31 25 4
gpt4 key购买 nike

我在 Android 中遇到 SQL 查询问题 - 它似乎没有返回正确的结果,我认为这可能是由于我的查询结构造成的。

这是一个正在运行的应用程序。我有一个可以正常工作的初始查询,这让我得到了最后三次运行中最常见的查询,即:

Cursor workout = db.rawQuery("SELECT ActivityID, DistanceID FROM Workout WHERE _id IN(Select _id FROM Workout ORDER BY _id DESC LIMIT 3) Group By ActivityID, DistanceID HAVING COUNT(*) > 1", null);

所以现在我有最近三场运行中最常见的距离+ Activity (运行/骑自行车等..),所以我想运行一个查询,让我得到最后三场禁食的 Activity +距离组合时间,所以我有这个:

                Cursor fastestWorkout = db.rawQuery
("Select _id, RunTimeSeconds, Distance FROM Workout WHERE ActivityID = " + workout.getInt(0) +
" AND DistanceID = " + workout.getInt(1) +
" AND RunTimeSeconds IN " +
"(Select Min(RunTimeSeconds) From Workout WHERE ActivityID = " + workout.getInt(0) +
" AND DistanceID = " + workout.getInt(1) +
" ORDER BY _id DESC LIMIT 3)" +
" ORDER BY _id DESC LIMIT 3", null);

所以这里唯一特别的是子查询,它让我获得最快的时间,我想这可能是错误的,但我不知道为什么。光标在最后有三个结果,而它应该是一个(有两个 Activity +距离相同,一个唯一 - 具有不同的 RunTimeSeconds,所以它应该拉回最快的那个。

如有任何帮助,我们将不胜感激!

最佳答案

如果我理解正确的话,您想要运行时间最快的行。为什么不直接按运行时间排序并选择第一个结果,而不是使用子查询来查找该值:

         Cursor fastestWorkout = db.rawQuery
("Select _id, RunTimeSeconds, Distance FROM Workout WHERE ActivityID = " + workout.getInt(0) +
" AND DistanceID = " + workout.getInt(1) +
" ORDER BY RunTimeSeconds LIMIT 1", null);

关于java - Android SQLITE - 未返回正确的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24548258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com