我使用以下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
更容易吗?
答案 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);