java - 如何通过 SQLite 中的具体 _id 正确选择随机行

标签 java android sql sqlite

我一直在开发一个 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/

相关文章:

java - 我可以使用 springboot-javafx-support 从初级阶段获取根 Pane 吗?

android - 在 Android 上通过自定义 URL 方案打开但不重启应用程序

java - 禁用@WebFilter(嵌入在依赖 jar 中)

java - 从 C# 导出适用于 Java 的 X509EncodedKeySpec 的 RSA 公钥

java - Android Studio 如何使用 2d ArrayList 添加与成员 ArrayList 连接的组名称 ArrayList?

java - 无法解析符号 'ByteArrayBuffer'

java - 使用自定义 View 中的共享元素启动 Activity

Python:在字符串周围插入双引号或单引号

sql - 如何将empty_clob()从java插入Oracle

sql - 如何在SQL查询中使用Oracle关联数组