我一直在开发一个 Android 应用程序,我正在使用 SQLite 作为问答数据库。一切正常,但由于我只了解 SQL 的基础知识,所以我不知道什么是完成我想做的事情的最佳方法。
该应用基本上是一个包含 15 个问题的测试,其中每个问题都有一个类别(共有 6 个类别)。该应用程序必须从每个类别中至少询问一个问题,因为如果没有,最后的结果将在未回答的类别中显示 0 分,这根本没有意义。
我实际上可以使用以下代码让它工作:
Question q = null;
for (int i = 0; i < NUM_CATEGORIES; i++) {
q = dbHelper.getQuestion(question_ids, Integer.toString(i));
questions.add(q);
listAnswers = dbHelper.getAnswersFromQuestion(q.get_Id());
all_answers.add(listAnswers);
}
注意:getQuestion() 的参数是question_ids(已经问过的问题的 ID,所以我不会再问了)和一个代表类别的字符串(从 0 到 NUM_CATEGORIES)
这是我在 getQuestion() 方法中调用的查询(通过 rawQuery() 方法):
String queryQuestion= "SELECT * FROM Question WHERE Question.category = " + category + ";";
category 是我之前提到的字符串参数,它表示要获取的问题的实际类别。
但我遇到的问题是我总是获取第一个具有该类别的问题,我想用它获取一个随机问题。
例如,如果我有这样的问题:
问题:“问题 1”,类别:0
问题:“问题 2”,类别:0
问题:“问题 3”,类别:1
问题:“问题 4”,类别:1
我总是从类别 0 中得到“问题 1”,从类别 1 中得到“问题 3”。显然我希望随机得到一个,而不是总是相同的。
我怎样才能查询这个想法?我可以做些什么来获取该类别的问题,但并不总是第一个吗?
非常感谢!
最佳答案
你想要一个随机行,所以:
SELECT q.*
FROM Question q
WHERE q.category = " + category + "
ORDER BY random()
LIMIT 1;
关于java - 如何通过 SQLite 中的具体 _id 正确选择随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508195/