选择指定行周围的行,并结合WHERE和ORDER BY

时间:2015-10-02 11:42:03

标签: mysql row

我有一个包含3个字段的表格:idpublicdate

如何进行MySQL查询,以便按date排序行,省略public = false行,只有行前面的5行和{{1行被取出? (当然也可以获取id = x的行。)

1 个答案:

答案 0 :(得分:1)

假设“之前”和“之后”是指日期,那么您可以使用union all

(select t.*
 from table t
 where t.public = false and
       t.date <= (select t2.date from table t2 where t2.id = x)
 order by date desc
 limit 6
)
union all
(select t.*
 from table t
 where t.public = false and
       t.date > (select t2.date from table t2 where t2.id = x)
 order by date asc
 limit 5
)

第一个子查询获得6行,其日期为1或“x”日期之前。第二个后来严格获得5行。