【问题标题】:Sql Random Data CheckSql随机数据检查
【发布时间】:2013-07-01 13:17:40
【问题描述】:

我有一个用于 iOS 游戏的数据库。我随机提取我的数据:

SELECT * FROM Questions WHERE Category IS 2 ORDER BY RANDOM() LIMIT 1

有什么办法可以查看之前出现的数据,不再显示?

【问题讨论】:

    标签: ios sql random


    【解决方案1】:

    您必须存储之前选择的行 ID 并将其从列表中排除。

    SELECT * 
    FROM (tablename) 
    WHERE (rowname) IS (data)
    and (tablename.id) != (PreviousID)
    ORDER BY RANDOM() LIMIT 1
    

    【讨论】:

    • 比尔感谢您的快速回复。你能说得更充分吗,因为这是我第一次尝试使用 sql。我的问题是我的桌子上的字段 (PreviusID) 到底是什么?
    • 我以为你在问一个关于特定表的特定问题,并且只列出 (tablename) 是通用的。每个表都应该有一个为其定义的主键。您可以在应用程序中保留此主键,然后在返回源代码时可以包含“and tablename.id != PreviousID”。
    • 比尔在我的情况下我有两个表,第一个表有两列(ID),(名称)是类别的名称,第二个表有一个名为 Category 的外键(ID)上的第一个表,然后是列(问题)、(答案 1)、(答案 2)、(答案 3)、(答案 4)。如果您现在可以理解,我编辑了我的问题。当出现下一个随机问题时,我正在尝试与以前的记录不同。
    • 您的 Question 表没有主键吗?它应该。我的建议是您始终将 PreviousID 存储为问题表的最后检索到的主键。然后,您可以确定下次选择时不会再选择刚才选择的问题。这不是唯一的 SQL 解决方案,您需要在 ObjectiveC 代码中跟上之前的 ID。
    • 现在没有问题表我只有第一个表类别的外键。有什么方法可以通过sql实现我的目标还是我必须实现我的目标c代码?
    猜你喜欢
    • 2013-03-17
    • 2018-04-16
    • 2019-12-02
    • 2020-09-03
    • 1970-01-01
    • 2019-10-04
    • 2012-12-26
    • 1970-01-01
    • 2018-09-10
    相关资源
    最近更新 更多