簡體   English   中英

如何通過SQLite中的concret _id正確選擇隨機行

[英]How to correctly select a random row through a concret _id in 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是我之前提到的String參數,代表要提取的問題的實際類別。

但是我遇到的問題是,我總是會提取具有該類別的第一個問題,並且我想用它來提取一個隨機問題。

例如,如果我有以下問題:

問題: “問題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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM