MySQL查询,用于选择多行作为这些行数据的数组
有没有一种方法可以选择前3行和后3行偏移量3,并在一个查询中以两个数组的形式获得结果?比如: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
(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在单个查询中组合这两个条件。请举例说明结果输出的外观。