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

如何在MySQL中从表中随机选择一行?,mysql,random,Mysql,Random,假设我有一个表,其中一个名为ID的整数列是主键。它是唯一的,并且不是空的,但是我们不能保证它是连续的,没有间隙。也就是说,我们可能有ID=1,2,6,7,8的行,而没有ID为3,4,5等的行 这就是为什么我们不能只生成一个随机数,然后得到一个具有相应ID的行 此外,我们希望所有行都有相同的被选中的机会,所以对于ID值中的b/c间隔,我们不能使用简单的方法,随机数在0到最大(ID)范围内 表中的行数也未知 如何从该表中随机选择一行 以下是表架构: CREATE TABLE IF NOT EXIST

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

这就是为什么我们不能只生成一个随机数,然后得到一个具有相应ID的行

此外,我们希望所有行都有相同的被选中的机会,所以对于ID值中的b/c间隔,我们不能使用简单的方法,随机数在0到最大(ID)范围内

表中的行数也未知

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

以下是表架构:

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`);
你试过了吗

可能重复的
SELECT * FROM `test_data` ORDER BY RAND() LIMIT 1;