簡體   English   中英

如何從MySQL中的表中選擇隨機行?

[英]How to select a random row from a table in MySQL?

假設我有一個表,其中有一個稱為ID的整數列作為主鍵。 它是唯一的且非空,但是我們不能保證它是連續的而沒有任何間隙。 也就是說,我們可能有ID = 1,2,6,7,8的行,而我們沒有ID 3、4、5等的行。

這就是為什么我們不能僅生成隨機數並獲得具有相應ID的行的原因。

另外,我們希望所有行都具有相等的機會被選中,因此ID值中的差距的b / c我們不能使用隨機數在0到max(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`);

您是否嘗試過RAND()

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM