sql - 根据条件选择 MAX() 的更简单方法?

标签 sql mysql

给定以下表格格式...

id | date       | value
___|____________|______
11 | 2010-01-01 | 50
11 | 2010-01-02 | 100
12 | 2010-01-01 | 150
12 | 2010-01-02 | 200

... 我需要选择与指定日期的最大 相对应的id。到目前为止,我想出如何做到这一点的唯一方法是使用如下子查询:

SELECT id
    FROM table
    WHERE date =  '2010-01-01'
        AND value = ( 
            SELECT MAX(value)
                FROM table
                WHERE date = '2010-01-01'
                GROUP BY date
        )

在一个有大约 70,000 条记录的表上,主键在 iddate 上,执行需要大约 0.25 秒,这对我来说似乎很长。有没有更快的方法让我达到相同的结果?

谢谢。

最佳答案

SELECT TOP 1 id FROM table WHERE date = '2010-01-01' ORDER BY value DESC

关于sql - 根据条件选择 MAX() 的更简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3191555/

相关文章:

MySQL修改前序树遍历——根据节点获取子树

java - 使用 JdbcDatasource 的迎风报告问题

MySQL 查询 : Consider A Value As Another Value

mysql - 无法启动 MySQL 服务器 - 控制进程退出并出现错误代码

php - 两个简单的mysql查询

mysql - 每天的最小值

sql - 查询表中每列的填充行数 (SQL Server)

Java ResultSet.updateRow() 抛出 MySQLSyntaxErrorException

php - PDO获取设置变量mysql php

mysql - 获取票证mysql最后进出时间