【问题标题】:mysql select 2 randoms row using countmysql使用计数选择2个随机行
【发布时间】:2014-02-23 01:05:40
【问题描述】:
SELECT COUNT(*) WHERE location='new york'
//fetch rows
$rand=rand(0,$rows-1);

SELECT ... WHERE location='new york' LIMIT ".$rand.", 2

我有查询尝试从 db 中选择 2 个随机行,我所做的是

我先计算总行数,然后使用 rand() 随机页面

有什么建议,或者有什么更好的方法吗?

【问题讨论】:

标签: php mysql


【解决方案1】:

你可以这样试试

SELECT ... WHERE location='new york' ORDER BY RAND() LIMIT 2

【讨论】:

    【解决方案2】:

    如果只是为了性能,我会这样做(不读取所有行)

    SELECT FLOOR(RAND() * COUNT(*)) AS offset1,FLOOR(RAND() * COUNT(*)) AS offset2 FROM {table} WHERE location='new york'
    SELECT * FROM {table} LIMIT $offset1, 1
    SELECT * FROM {table} LIMIT $offset2, 1
    

    我知道,有 3 个查询,但其中两个都很快

    【讨论】:

      猜你喜欢
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多