此刻我正在返回这样的随机行
SELECT id, title from ORDER BY RAND() LIMIT 1
我需要返回一个随机但唯一的行。因此,如果我第一次获得第id行= 15,那么下次我要将第15行从结果池中删除时,就永远不会再获得第15行
我想我可以在技术上做这样的事情
SELECT id, title from where id <>15 ORDER BY RAND() LIMIT 1
但是这个陈述很快就会变成这样
SELECT id, title from where id <> 15 AND id <> 16 AND id <> 20 AND id <> 25 AND id <> 5 AND id <> 6 AND id <> 18 AND id <> 19 AND id <> 100 AND id <> 105 AND id <> 195 AND id <> 155 AND ORDER BY RAND() LIMIT 1
这种增长有点问题,因为我需要通过将这些可见ID传递到网页然后再返回到服务器来跟踪这些可见ID,或者可能必须为每个包含所有可见ID的用户保持会话。所有这些都是很多额外的工作,因此首先我想知道是否还有其他方法可以做到这一点。
做这种事情还有我不知道的另一种方式吗?
将字符串变量初始化为“ 0”,我们将该变量称为Session.IDsSeen。
使您的查询如下所示:
where id not in (Session.IDsSeen)
每次运行查询时,请在Session.IDsSeen后面附加一个逗号和ID。
请注意,此答案仅显示逻辑。您可能想对Sessionl.IDsSeen使用查询参数,但是由于我不是Java程序员,所以我不知道Java的实现方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句