我有以下 MySQL。我想以随机顺序拉取数据。
谁能教我怎么做。
$Q = $this->db->query('SELECT P.*, C.Name AS CatName
FROM products AS P
LEFT JOIN categories C
ON C.id = P.category_id
WHERE C.Name = "Front bottom"
AND p.status = "active"
');
最佳答案
$Q = $this->db->query('SELECT P.*, C.Name AS CatName
FROM products AS P
LEFT JOIN categories C
ON C.id = P.category_id
WHERE C.Name = "Front bottom"
AND p.status = "active"
ORDER BY RAND()
');
您可以使用 RAND
MySQL 的功能来做到这一点,需要注意的是它在巨大的数据集(~ 大约 10k)上执行得非常慢。 MySQL 会为表的每一行选取一个随机数,如果表很大,这可能会导致问题。
一个更安全的方法是执行 SELECT count(*) as n FROM table
并选择一个随机数并使用 LIMIT 1,n
进行查询以拾取第 n 行。如果您只需要 1 个,或者您不关心以相同顺序获得结果,那将起作用。
在我看来,如果你真的需要一个完整的随机集,最好在服务器端完成。
关于mysql - 如何随机排序数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1851610/