mysql查询,用于选择多行作为这些行数据的数组

sauutmhj  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(376)

有没有办法选择前3行和后3行(偏移量3),并在一个查询中获得两个数组的结果?比如:

  1. (SELECT * FROM product WHERE 1 LIMIT 3) as first_array
  2. (SELECT * FROM product WHERE 1 OFFSET 3 LIMIT 3) as second_array

希望你能理解我。很抱歉,我不知道该怎么解释。
假设我只想要ids-output示例:

  1. id_1 id_2
  2. 1 4
  3. 2 5
  4. 3 6

我在帖子下面的答案中尝试的是:

  1. SELECT id as id_1 FROM `ct_product` WHERE 1 LIMIT 3
  2. UNION ALL
  3. SELECT id as id_2 FROM `ct_product` WHERE 1 LIMIT 3 OFFSET 3

结果对我来说很奇怪。它似乎只返回第二个查询结果,它们不是第4行、第5行和第6行,而是第5行、第6行和第3行(按此顺序)。我的表行是:

  1. id
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
rdlzhqv9

rdlzhqv91#

您可以使用以下查询:

  1. SELECT a1.id, a2.id
  2. FROM (SELECT *, @rownum1:=@rownum1+1 AS rownum
  3. FROM (SELECT id
  4. FROM `ct_product`
  5. LIMIT 3
  6. ) art
  7. JOIN (SELECT @rownum1 := 0) r
  8. ) a1
  9. JOIN (SELECT *, @rownum2:=@rownum2+1 AS rownum
  10. FROM (SELECT id
  11. FROM `ct_product`
  12. LIMIT 3, 3
  13. ) art
  14. JOIN (SELECT @rownum2 := 0) r
  15. ) a2
  16. ON a1.rownum = a2.rownum

输出:

  1. id id
  2. 1 4
  3. 2 5
  4. 3 6

这个查询通过创建两个带有人工生成的行号的新表来工作( @rownum1 以及 @rownum2 )从原始表的前3行和后3行。然后在匹配的行号上连接它们以获得所需的结果。

展开查看全部

相关问题