MySQL查询选择多个行作为那些行数据的数组

时间:2018-08-16 05:43:34

标签: mysql

有没有办法选择第3行,然后选择下3行(偏移3),并在单个查询中将结果作为两个数组获得?像这样:

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

希望您能理解我。很抱歉,解释不知道该怎么用其他方式解释。

让我们说我只想要ids-输出示例:

id_1   id_2
 1       4
 2       5
 3       6

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

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

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

id
1
2
3
4
5
6
7

1 个答案:

答案 0 :(得分:1)

您可以通过以下查询来做到这一点:

SELECT a1.id, a2.id
FROM (SELECT *, @rownum1:=@rownum1+1 AS rownum
      FROM (SELECT id
            FROM `ct_product`
            LIMIT 3
            ) art
      JOIN (SELECT @rownum1 := 0) r
      ) a1
JOIN  (SELECT *, @rownum2:=@rownum2+1 AS rownum
      FROM (SELECT id
            FROM `ct_product`
            LIMIT 3, 3
            ) art
      JOIN (SELECT @rownum2 := 0) r
      ) a2
ON a1.rownum = a2.rownum

输出:

id  id  
1   4
2   5
3   6

此查询的工作方式是从原始表的前3行和后3行创建两个具有人工生成的行号(@rownum1@rownum2)的新表。然后将它们加入匹配的行号以得到所需的结果。