我有一张网址表。我需要循环选择1。希望每次浏览显示1次或每位访客显示1次,如果我有100次网页浏览或访问者,则每次显示20次。
基本上:SELECT url FROM table LIMIT 1
(轮流)
+-------+---------------------+
| id | url |
+-------+---------------------+
| 1 | http://google.com |
| 2 | http://yahoo.com |
| 3 | http://ebay.com |
| 4 | http://anything.com |
| 5 | http://other.com |
+-------+---------------------+
答案 0 :(得分:3)
如果我正确理解循环法的含义,那么你可以按照
的方式做一些事情SELECT id, url
FROM urls u CROSS JOIN
(
SELECT MIN(id) min_id, MAX(id) max_id
FROM urls
) m
WHERE id > IF(? >= max_id, 0, ?) -- last shown id goes here instead of placeholders
ORDER BY id
LIMIT 1;
存储(在会话,文件,另一个表等中),并将最后显示的id
或0传递给查询。
如果你到达最后一行,这将给你下一行或第一行。
如果您在id
s。
这是 SQLFiddle 演示
答案 1 :(得分:2)
您可以使用order by rand()
SELECT * FROM table ORDER BY rand() LIMIT 1
答案 2 :(得分:1)