SQL - 如何从一个选择的表中选择不连续的行?

时间:2015-11-02 10:36:22

标签: mysql

 `SELECT * FROM Post
  WHERE Tid = Id
  ORDER BY Time
  LIMIT 0,1`

 `SELECT * FROM Post
  WHERE Tid = Id
  ORDER BY Time
  LIMIT start,offset;`

我可以只用一个SELECT来完成吗? 就像

  `SELECT * FROM Post
  WHERE Tid = Id
  ORDER BY Time
  LIMIT 0,1 and start,offset;`

1 个答案:

答案 0 :(得分:0)

在这种情况下,将两个sql语句组合在一个联合中,因为你不能在一个select中提供多个limit子句:

SELECT * FROM Post LIMIT 1,2
UNION ALL
SELECT * FROM Post LIMIT 5,6;

但是,我会在2个选择语句中添加order by子句,以便100%确定您将知道将选择哪些记录。

更新:从技术上讲,您可以使用正在运行的计数器在单个语句中执行此操作,并在其中的计数器上进行过滤。但是,从性能方面来说,这并不是一个好主意,因为mysql必须遍历表中的所有记录。它无法知道哪些记录符合标准。限制条款是更好的选择。