【问题标题】:sql query to select a random row from a table based on the previous querysql查询根据上一个查询从表中选择一个随机行
【发布时间】:2020-10-21 22:25:22
【问题描述】:

我正在编写一个简单的字母猜谜游戏,其中类别和短语存储在 sqlite 数据库中。 一个表(类别)包含表名和表的人类可读标题。 还有 31 个其他表格,其中包含短语。

虽然我可以使用两个 sql 查询来做到这一点,第一个是检索一个随机表名,另一个是从第二个表中检索随机短语。

"SELECT tablename, title FROM categories order by Random() limit 1";

然后将tablename分配给变量表。

"SELECT phrase FROM " + table + " order by Random() limit 1";

我想弄清楚的是如何组合这些语句,以便我可以将其存储为视图,然后我的程序不需要了解数据库的内部结构。

我希望我已经解释得足够清楚了,提前谢谢你。

【问题讨论】:

  • 我建议您修复您的设计。这 31 个表应该只是一个表,类别为一列。
  • 我确实想过,但是这个数据库中大约有 50,000 个短语,我不确定如何自动化该过程。源代码位于github.com/bcburnett/TodoList 的 github 存储库中
  • 我倾向于尝试创建一个 UNION ALLs 这 31 个表的视图(假设它们具有相似的结构)。然后大概您可以将 Random() 选择应用于视图,而不必关心表名。我认为不可能“动态”选择要使用视图查询的表。

标签: sql sqlite


【解决方案1】:

不幸的是,我发现这在不支持像 sqlite 这样的存储过程的数据库上是不可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2011-04-26
    • 2011-07-09
    相关资源
    最近更新 更多