用于随机化帖子的SQL

时间:2013-10-11 18:25:35

标签: php sql

在我的SQL中,我有一个列id为&的表。订单。根据id& amp;显示网站数据。 Order.But我们想要改变数据的显示方式,我们想要随机化整个内容..任何人都可以建议SQL查询。

粗略的数据库结构如下

city_id       city_name       city_order
  1               xyz             1
  2               geh             2
  3               tre             3

此致

3 个答案:

答案 0 :(得分:3)

ORDER BY RAND()添加到查询的末尾

答案 1 :(得分:1)

你会做这样的事情:

select city_id, city_name, city_order from table_name order by rand()

其中table_name是表的名称

答案 2 :(得分:-1)

你可以像其他人建议的那样使用ORDER BY RAND(),但是你也应该花些时间与你的查询可能曾经拥有的任何效率和性能相似。这是因为您现在根据以下内容订购结果集:

  1. 未编入索引。
  2. 动态生成。
  3. 对于几乎任何需要引入随机性的操作,MySQL [以及几乎任何其他RDBMS]最明显不适合

    更好的选择:

    1. 如果您的预期结果集足够小,不会导致:

      • 根据您的网络和数据库服务器之间所需的带宽延迟。
      • 使用过多的内存来存储结果集。

      然后只需获取所有潜在的内容项,然后使用array_rand()shuffle()进行随机选择。

    2. 如果您的预期结果集足够大,以至于您不想将整个事情传递给PHP,那么我建议如下:

      $sql = 
      "SELECT COUNT(*) 'count'
      FROM content_table
      WHERE [your conditions]";
      
      $rs = $dbh->query($query);
      
      $random = rand(0,$rs['count']);
      
      $sql =
      "SELECT field1, field2, ...
      FROM content_table
      WHERE [your conditions]
      LIMIT $random, 1";
      
      $rs = $dbh->query($sql);
      
    3. 这两个都会尊重你的索引。