再次编辑:有人发布了解决方案,但它有一个奇怪的x我不明白为什么x在那里,但现在它的工作原理!一些人解释!!!
编辑:我需要及时获得最近的12个记录,我使用时间不长,因为后来的时间也有一个更大的ID,我认为“由于主要原因而无法工作”这是一个mysql语句
"SELECT * FROM items WHERE item_section='$section'
ORDER BY item_id DESC, rand() LIMIT 12"
我需要添加DESC,因为我希望最近发布的项目对应更大的ID号。我想要的是最后12条记录,但是12条记录是随机排列的。这不起作用,是什么给出的?我想我只是获得了非随机化的最新12条记录。
答案 0 :(得分:1)
因为您的item_id
可能是主键,因此订单已完全确定且rand()
是noop。
编辑:由于您可能不关心“为什么”的答案,您要做的是删除item_id DESC,
部分:
SELECT * FROM items WHERE item_section='$section'
ORDER BY rand() LIMIT 12
如果您希望按ID排序
SELECT * FROM (SELECT * FROM items WHERE item_section='$section'
ORDER BY rand() LIMIT 12) AS q ORDER BY item_id;
如果你想先随机分配12
SELECT * FROM (SELECT * FROM items WHERE item_section='$section'
ORDER BY item_id DESC LIMIT 12) AS q ORDER BY rand();
答案 1 :(得分:1)
如果你把你说的话转成sql,你会得到答案:
SELECT * FROM (
SELECT * FROM items
WHERE item_section = '$section'
ORDER BY item_id DESC
LIMIT 12) x
ORDER BY rand()
你首先选择最近的12条记录(此处别名为x
),然后你随机订购它们......需要 2 查询:一个嵌套在另一个内。