mysql - 如何从 MySQL 的表中随机选择一行?

标签 mysql random

假设我有一个表,其中一个名为 ID 的整数列作为主键。它是唯一的且不为空,但我们不能保证它是连续的而没有间隙。 IE。我们可能有 ID = 1,2,6,7,8 的行,但没有 ID 为 3,4,5 等的行。

这就是为什么我们不能只生成一个随机数并获得具有相应 ID 的行的原因。

我们还希望所有行都有相同的机会被选中,因此我们不能使用简单的方法在 0 到 max(id) 范围内使用随机数的 ID 值差距的 b/c

表中的行数也不知道。

如何从该表中随机选择一行?

这是表架构:

CREATE TABLE IF NOT EXISTS `test_data` (
  `id` int(10) unsigned NOT NULL,

   `create_date` datetime DEFAULT NULL,

    `text_1` varchar(255) NOT NULL DEFAULT 'BMqFXUslYnGsYsPxHTtZVbcwnEWFmSXxTAUV9YxXXDH5ClUEUO8kFz0cW1xC3o9aMSwabnEr43W23KZnKvrk8PHEJv18SU5JHTH72sLTtleitBJBIWmIpul7LtuYOpc4iRDqEAT80UeG7L2l4r1pr2jEMW7222reAOuIcBIUcsH9LYlojeQjVkc9ZhYXgnN3xRGHLJ3L0MGoXO4GHttEv053DqkkKYEye34bpGI2tJ0IE9M8BIFf2u08jB50nhD',

     `text_2` varchar(255) NOT NULL DEFAULT 'hoA6tWi8AEcikkJM50Mz800PGTUKNnyj3OCKhyJ4ExaJf6bYbqXlNWo4y0XXXo7HuvsNgYWnn16211RbKDesQ852QA33s1eni4pBoraEs3YiV0W69yMY7Nf0pvQI198HUVKYPWk9zpK38PDphtPJXO2z5Wb8mbBN0gN8iK5xzUQQDwoAJlO3Z8xXn2OWyVjKswRbZNKW6l0tvn0zN4S4BoR9gkN7s4Ov9tTGeF4uwWYhPEs0WsDqatMjmbnMQmC'

   ) ENGINE=InnoDB;

   ALTER TABLE `test_data`
  ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `id` (`id`);

最佳答案

你试过了吗RAND()

SELECT * FROM `test_data` ORDER BY RAND() LIMIT 1;

关于mysql - 如何从 MySQL 的表中随机选择一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30352520/

相关文章:

mysql - 如果使用 AVG 函数,SQL 查询结果将缩减为单个结果

java - 在 Javafx Controller 中调用方法时遇到问题

mysql - 1 : The action 'Install' for product 'MySQL Server 5.7.21' failed

mysql - Laravel 5.4 给出错误的 COM_STMT_PREPARE 响应大小

java - 如何制作随机数模式生成器?

algorithm - 如何根据随机形状创建网格?

mysql - Mysql 中 Trigger 的最佳替代品

c - rand() 不遵循高斯分布和中心极限定理

python - 使用 Pandas 的赋值和 Lambda 函数向每行添加 Rand

c - C中的随机数生成