gpt4 book ai didi

java - SQLite random() 行,但其中 1 行必须具有特定值?

转载 作者:行者123 更新时间:2023-11-30 02:03:28 24 4
gpt4 key购买 nike

因此,我正在开发一种问答游戏,游戏会在屏幕上和下方的 4 个按钮上显示一个问题,其中会填入 1 个正确答案和 3 个错误答案。简单吧?我正在尝试使用以下 rawQuery() 加载 4 个答案,除了必须出现的正确答案外,所有答案都必须是随机的。

SQLite:

myCursor = db.rawQuery("SELECT * FROM Answers WHERE QuestionID = 3 ORDER BY RANDOM() LIMIT 4", null);

因此,QuestionID 是指定要显示哪个问题以加载正确答案的字段。我需要有很多答案,这样玩家就无法记住它们。像这样的伪代码可能吗?

myCursor = db.rawQuery("SELECT * FROM Answers WHERE QuestionID = 3 ORDER BY RANDOM('WHERE RightWrong = 1 LIMIT 1') LIMIT 4", null);

RightWrong 是告诉它是否是正确答案的字段(在 DB 内),它是一个 INT,如果它被设置为 1 则它是正确答案。

我在 SQLite 数据库浏览器中使用 SQLiteAssetHelper。

最佳答案

我可能会尝试按照以下连接的方式进行查询。

myCursor = db.rawQuery("SELECT * FROM (SELECT * FROM (SELECT * FROM Answers
WHERE QuestionID = 3 AND RightWrong = 0 ORDER BY RANDOM() LIMIT 3)
UNION SELECT * FROM (SELECT * FROM Answers WHERE QuestionID = 3 AND
RightWrong = 1 LIMIT 1)) ORDER BY RANDOM() LIMIT 4", null)

有几点需要注意,首先,这不是经过测试的查询,我不能 100% 确定 SQL 语法是否正确,但它应该可以帮助您理解我的意思。此外,我相信这将始终将正确答案作为最后一个返回值,您将需要在稍后的代码中随机化它所在的位置。我希望这会有所帮助。

--编辑--修复了查询,使其真正有效

关于java - SQLite random() 行,但其中 1 行必须具有特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31141869/

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