我正在构建一个包含数百万行的应用程序,因此我尽可能避免使用 JOIN。我有一个这样的表:
ID category value_1 value_2
1 1 2.2432 5.4321
2 2 6.5423 5.1203
3 1 8.8324 7.4938
4 2 0.4823 9.8244
5 2 7.2456 3.1278
6 1 1.9348 4.4421
我正在尝试从具有最低 ID
的行中检索 value_1
并从具有最高 ID 的行中检索 value_2
类别
,像这样:
category value_1 value_2
1 2.2432 4.4421
2 6.5423 3.1278
这是否可以有效地避免字符串操作和 JOIN 等构造?
谢谢!
最佳答案
试试这个:
SELECT
category,
(
SELECT t2.value1
FROM table1 t2
WHERE t2.id = MIN(t1.id)
) as value1,
(
SELECT t3.value2
FROM table1 t3
WHERE t3.id = MAX(t1.id)
) as value2
FROM
table1 t1
GROUP BY
category
;
创建并填充表格:
CREATE TABLE `table1` (
`id` INT NOT NULL,
`category` INT NULL,
`value1` DOUBLE NULL,
`value2` DOUBLE NULL,
PRIMARY KEY (`id`)
);
INSERT INTO table1 VALUES
(1, 1, 2.2432, 5.4321),
(2, 2, 6.5423, 5.1203),
(3, 1, 8.8324, 7.4938),
(4, 2, 0.4823, 9.8244),
(5, 2, 7.2456, 3.1278),
(6, 1, 1.9348, 4.4421);
输出:
1 2.2432 4.4421
2 6.5423 3.1278
关于mysql - 您能否从具有 MIN 或 MAX 值的行中获取不同的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63553926/