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`);
的[MySQL的从600K行选择10个随机行快速]可能的复制(http://stackoverflow.com/questions/4329396/mysql-select-10-random-rows-from-600k-rows-fast ) – mleko