SQL查询,从筛选的选择中获取随机行

时间:2013-11-12 16:17:36

标签: mysql sql random

我使用以下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

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

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

1 个答案:

答案 0 :(得分: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);