Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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查询,用于选择多行作为这些行数据的数组_Mysql - Fatal编程技术网

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

MySQL查询,用于选择多行作为这些行数据的数组,mysql,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

有没有一种方法可以选择前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
结果对我来说很奇怪。它似乎只返回第二个查询结果,它们不是第四行、第五行和第六行,而是第五行、第六行和第三行。 我的表格行是:

id
1
2
3
4
5
6
7

您可以使用此查询执行此操作:

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。然后在匹配的行号上连接它们以获得所需的结果。

数组是什么意思?MySQL没有数组变量。只是对它进行分组。为其提供了多个结果的别名-结果1 id、名称/结果2 id,名称结果_1必须保存第一组产品和第二组产品的数据的位置。您可能需要使用临时表。当我了解您的要求时,您可以使用union在单个查询中组合这两个条件。请举例说明结果输出的外观。