2015-05-20 125 views
0

比方說,我有一個ID爲主鍵的整數列的表。它是獨一無二的,但我們不能保證它是連續的沒有差距。即我們可能有ID = 1,2,6,7,8的行,而且我們沒有ID 3,4,5等的行等。如何從MySQL中的表中選擇一個隨機行?

這就是爲什麼我們不能只生成一個隨機數並得到一行與那個相應的ID。

此外,我們希望所有的行具有被選擇的同等機會,所以B/C在ID值的間隙的,我們不能在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`); 
+0

的[MySQL的從600K行選擇10個隨機行快速]可能的複製(http://stackoverflow.com/questions/4329396/mysql-select-10-random-rows-from-600k-rows-fast ) – mleko

回答

2

你試過RAND()

SELECT * FROM `test_data` ORDER BY RAND() LIMIT 1; 
相關問題