Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL-如何使用一个select从表中选择不连续的行?_Mysql - Fatal编程技术网

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

Mysql SQL-如何使用一个select从表中选择不连续的行?,mysql,Mysql,我可以只使用一个SELECT来完成此操作吗? 就像 `SELECT * FROM Post WHERE Tid = Id ORDER BY Time LIMIT 0,1` `SELECT * FROM Post WHERE Tid = Id ORDER BY Time LIMIT start,offset;` 在本例中,将两条sql语句合并在一个union中,因为不能在一个select中提供多个limit子句: `SELECT * FROM Post WH

我可以只使用一个SELECT来完成此操作吗? 就像

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

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

在本例中,将两条sql语句合并在一个union中,因为不能在一个select中提供多个limit子句:

  `SELECT * FROM Post
  WHERE Tid = Id
  ORDER BY Time
  LIMIT 0,1 and start,offset;`
但是,我会在2条select语句中添加一个ORDERBY子句,以便100%确保您知道将选择哪些记录


更新:从技术上讲,您可以在一条语句中使用正在运行的计数器并在where中对计数器进行过滤。但是,从性能角度来看,这并不是一个好主意,因为mysql必须循环遍历表中的所有记录。它无法知道哪些记录将满足标准。更好地选择限制子句。

您的意思是要从一个表中选择多个随机记录吗?是的,要选择一个表中的几个不连续部分。是要随机选择不连续记录,还是根据某个模式?某个模式?我想选择限制2,3和限制6,2。很抱歉,在你回答我的问题之前,我无法帮助你。非常感谢你的耐心。但是这段代码只会搜索表一次?如果你是指联合查询,那么不会,它会搜索表两次。我在更新部分描述了一种替代方法,它只扫描表一次,但是,我相信这个选项会比union慢。
SELECT * FROM Post LIMIT 1,2
UNION ALL
SELECT * FROM Post LIMIT 5,6;