为什么这不是随机的东西?

时间:2012-01-30 11:42:41

标签: mysql

再次编辑:有人发布了解决方案,但它有一个奇怪的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条记录。

2 个答案:

答案 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 查询:一个嵌套在另一个内。