Mysql SQL-如何使用一个select从表中选择不连续的行?
我可以只使用一个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 * 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;