【问题标题】:SQL Query, get random row from a filtered selectionSQL 查询,从筛选的选择中获取随机行
【发布时间】:2013-11-12 16:17:35
【问题描述】:

我使用以下 SQL 查询来获取两个随机行。

entry.sql
SELECT id, userID, img, points, votes 
FROM entry
WHERE rotation = 1
ORDER BY RAND()
LIMIT 2

现在我想过滤可能的行。我在这里通过rotation 执行此操作,但我想要更多。

我有第二个和第三个表格,如下所示:

users.sql    
ID | username

voted.sql
ID | userID | entryID | timestamp

我只想获取用户尚未投票的行。所以我们应该从voted.sql 获取user 的所有entryIDs,并确保上面的查询没有选择它们,我该怎么做?

或者您会以不同的方式保存数据以使already voted check 更容易吗?

【问题讨论】:

    标签: mysql sql random


    【解决方案1】:

    使用连接或子查询来执行此操作,例如:

    SELECT id, user.userID, entry.img, entry.points, entry.votes
    FROM entry
    WHERE userID NOT IN (SELECT DISTINCT userID 
                         FROM voted
                         WHERE userID = entry.userID);
    

    【讨论】:

    • 当然,你仍然需要像以前一样添加随机排序,或者添加额外的条件:我不太确定你到底想要实现什么。
    猜你喜欢
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多