我有以下查询:
select @rownum:=@rownum+1 ‘rank’, pgid, picfile from pages,
(SELECT @rownum:=0) r
where pos = 23
order by Rand()
limit 4
这将从数据库中选择图像文件名,并为其分配行号。不幸的是,Rand()的顺序然后随机化这些行,因此图像总是具有相同的行号,但“rank”字段是随机排序的。
rank picfile
3 c.jpg
1 a.jpg
4 b.jpg
2 d.jpg
我想要的是'等级'顺序总是为1,2,3,4,5但是要随机排序的图片文件名
rank picfile
1 a.jpg
2 d.jpg
3 c.jpg
4 b.jpg
并且下次运行查询时,我想要,例如,....
rank picfile
1 b.jpg
2 d.jpg
3 a.jpg
4 c.jpg
希望我已经正确解释了它!
非常感谢您的期待 克里斯
答案 0 :(得分:1)
只需将rownum
部分设为外部查询:
SELECT @rownum:=@rownum+1 ‘rank’, *
FROM
(SELECT pgid, picfile FROM pages, (SELECT @rownum:=0) r
WHERE pos = 23
ORDER BY Rand()
LIMIT 4
)
ORDER BY rank
答案 1 :(得分:0)
我的一位朋友提供了解决方案:
select @rownum:=@rownum+1 'rank', r1.* FROM
(SELECT pgid, picfile from pages,
(SELECT @rownum:=0) AS r2
where pos= 23
order by Rand() limit 5
) AS r1
ORDER BY rank