[英]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.