SQL查询,用于选择某个非主要字段的最后X个条目

时间:2017-07-29 08:56:21

标签: mysql sql select

我在设置稍高级的SQL查询时遇到了困难。 我尝试做的是为每个function photomag_image_size() { $image_sizes = get_intermediate_image_sizes(); return array_merge($image_sizes, array('full',)); } 选择最后24个条目,但我不断获得SQL超时(到目前为止,该表有大约40000个条目)。 所以,让我们说full 1的200个条目和zr_miner_id 2的200个条目,我最终会得到48个结果。

到目前为止,我已经提出了以下查询。 这应该是选择zr_miner_id中每个结果少于24个具有相同zr_miner_id的较新条目的结果。 我无法想出任何更好的方法来执行这项任务,但话又说回来,我还没有那么先进的SQL。

zec_results

1 个答案:

答案 0 :(得分:0)

使用变量!

SELECT r.*
FROM (SELECT r.*,
             (@rn := if(@m = r.zr_miner_id, @rn + 1,
                        if(@m := r.zr_miner_id, 1, 1)
                       )
             ) as rn
      FROM zec_results r CROSS JOIN
           (SELECT @m := -1, @rn := 0) params
      ORDER BY r.zr_miner_id, r.zr_id DESC
     ) r
WHERE rn <= 24 ;

如果要将查询放入视图中,则上述操作无效。使用(zr_miner_id, zr_id)上的索引可以提高您的方法的效果。