PHP MySQL选择行不同的随机行

时间:2015-09-15 16:02:37

标签: php mysql random

我想要实现的是随机选择多行,其中某列与最后一列不同,例如

SELECT * FROM mytable WHERE `column_for_duplicate_values` != '$thelastkey' ORDER BY RAND() LIMIT 10

多个值的列将保持例如:

1 , 1 , 1 , 1 , 2, 5 , 6, 6 , 6 , 6 , 6 , 11 , 11 ,  11 , 19

我想从每个中选择1。所以我会得到

1 , 2 , 5 , 6 , 11 , 19

1 个答案:

答案 0 :(得分:2)

我的解决方案的主要问题可能是它的

  1. 不适用

    您需要在mytable

    中拥有主要唯一身份证明
      SELECT * FROM mytable WHERE id IN (
               SELECT id FROM (
                        SELECT id, column_for_duplicate_values 
                        FROM mytable ORDER BY RAND()) AS rand 
                        GROUP BY column_for_duplicate_values
                        ORDER BY RAND()) LIMIT 10;
    
  2. 主要概念是先获取所有值的随机列表,其中包含id和您想要具有唯一值的列。

    从这个结果我们按照我们只想拥有一次的值进行分组,只返回id。然后主表将从此列表中选择10个随机ID。

    我用我的一个db尝试过。应该使用任何具有唯一ID和一些随机其他列的表。

    如果您追加ORDER BY id ASC,也会对ID进行排序。