请问我需要什么查询才能在我的表中随机选择 JUST ONE ROW?
我努力了:
SELECT *
FROM `table`
ORDER BY RAND()
LIMIT 0,1;
它似乎很慢,有时不起作用。
谢谢
请问我需要什么查询才能在我的表中随机选择 JUST ONE ROW?
我努力了:
SELECT *
FROM `table`
ORDER BY RAND()
LIMIT 0,1;
它似乎很慢,有时不起作用。
谢谢
您可以创建一个STORED PROCEDURE
包含动态 SQL 来获取随机记录,
DELIMITER $$
CREATE PROCEDURE SelectOne()
BEGIN
SET @rownum := (SELECT count(*) FROM TableName);
SET @start := (SELECT FLOOR((rand() * @rownum)));
SET @sql = CONCAT('SELECT * FROM TableName LIMIT ?, 1');
PREPARE stmt FROM @sql;
EXECUTE stmt USING @start;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
感谢Jack的改进:)
如果表很大,ORDER BY
会很慢。相反,您可以根据表中的行数选择一个随机偏移量。
SELECT * FROM table LIMIT 1 OFFSET ?
?
随机数在哪里<SELECT COUNT(*) FROM table