mysql - 您能否从具有 MIN 或 MAX 值的行中获取不同的列?

标签 mysql

我正在构建一个包含数百万行的应用程序,因此我尽可能避免使用 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/

相关文章:

MySQL 查询连接花费的时间太长

php - SQL 查询失败且没有错误消息

php - CREATE IDENTIFIER ----使用php将2个表单数据插入到一张表中

java - Hibernate (MySQL) 上区分大小写的查询

php - 如何在 Laravel 中使用数据库事务

mysql - 使用 Order By 和 Group BY 折叠数据

javascript - 如何检查请求是否已发出

php - Laravel:如何查询多个间接相关的表?

mysql - 使用 Resource 文件夹和 Mysql 在 Unity 中加载 3D 模型

mysql - 哪个数据库可以在 Raspberry Pi 上存储大指标数据?