代码之家  ›  专栏  ›  技术社区  ›  Arsen Mkrtchyan

按随机顺序返回行[重复]

  •  104
  • Arsen Mkrtchyan  · 技术社区  · 15 年前

    这个问题已经有了答案:

    是否可以在每次运行查询时编写以随机顺序返回表行的SQL查询?

    6 回复  |  直到 8 年前
        1
  •  164
  •   Arsen Mkrtchyan    12 年前
    SELECT * FROM table
    ORDER BY NEWID()
    
        2
  •  20
  •   trejder tvCa    9 年前

    这是最简单的解决方案:

    SELECT quote FROM quotes ORDER BY RAND() 
    

    虽然它不是最有效的。 This one 是更好的解决方案。

        3
  •  12
  •   devstuff    15 年前

    通常的方法是使用newid()函数,该函数生成唯一的guid。所以,

    SELECT * FROM dbo.Foo ORDER BY NEWID();
    
        4
  •  0
  •   nilamo    15 年前

    为了高效和随机,最好有两个不同的查询。

    有点像…

    从表中选择表ID

    然后,在您选择的语言中,选择一个随机ID,然后提取该行的数据。

    从表中选择*,其中table_id=$rand_id

    但如果您希望表中有很多行,那么这不是一个好主意。如果你对随机选择的内容设置某种限制,那就更好了。对于出版物,可能只从去年发布的项目中随机选取。

        5
  •  0
  •   trejder tvCa    9 年前

    下面是一个例子( source ):

    SET @randomId = Cast(((@maxValue + 1) - @minValue) * Rand() + @minValue AS tinyint);
    
        6
  •  -2
  •   Dan Both    8 年前

    这就是你需要的:

    从表中选择*名称order by rand()限制1