mysql - 如何选择mysql中两个条目之间的最新日期

标签 mysql

我有这个查询,它返回几乎相同的两列,除了两列看起来像这样:

条目 1:LOTNUM = TAOM7U034N,操作码 = 8385,DATEADDED = 2015-09-04 05:19:00,DATERELEASED = 2015-09-09 15:41:00

条目 2:LOTNUM = TAOM7U034N,操作码 = 8385,DATEADDED = 2015-09-28 16:51:00,DATERELEASED = 2015-10-01 14:34:00

SELECT
    LOTNUM,
    OPCODE,
    DATERELEASED
FROM
    HOURLY_FT_WIP.CACHE_IRAC_HOLD_LOTS AS i
WHERE
    LOTNUM IN('TAOM7U034N')
AND DATEADDED =(
    SELECT
        MAX(DATEADDED)
    FROM
        HOURLY_FT_WIP.CACHE_IRAC_HOLD_LOTS x
    WHERE
        x.LOTNUM = i.LOTNUM
    AND x.OPCODE = i.OPCODE
)

这个查询没问题,返回第二个条目,这就是我所需要的。但这个查询需要 15 秒。

我尝试修改为:

SELECT
    LOTNUM,
    OPCODE,
    DATERELEASED
FROM
    HOURLY_FT_WIP.CACHE_IRAC_HOLD_LOTS AS i
WHERE
    LOTNUM IN('TAOM7U034N')
GROUP BY LOTNUM, OPCODE

这个要快得多,大约 0.05 秒。但是,这会返回较旧日期的第一个条目。我需要第二个条目的最新日期。

最佳答案

如果您同意选择中包含另一个字段,您可以尝试类似的操作。

SELECT
    LOTNUM,
    OPCODE,
    DATERELEASED,
    MAX(DATEADDED)
FROM
    HOURLY_FT_WIP.CACHE_IRAC_HOLD_LOTS AS i
WHERE
    LOTNUM IN('TAOM7U034N')

关于mysql - 如何选择mysql中两个条目之间的最新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33028506/

相关文章:

php - 未使用 DEFAULT 值创建表

.net - MySql .net 连接器成员资格提供程序默认 MinRequiredNonAlphanumericCharacters

mysql - 如何在没有联合运算符的情况下运行此查询?

php - 使用 PHP 从数据库中获取与查询匹配的所有条目

mysql - 工作台对于从脚本文件创建本地数据库是必需的

mysql - 无法从 NHibernate.Driver.MySqlDataDriver 创建驱动程序

PHP 和 Javascript 不能很好地协同工作

按日期排序时,MySQL 数据库使用 "Using where; Using temporary; Using filesort"

mysql - SQL - 根据条件将字符插入字符串

php - 如果用户登录,尝试显示其他内容?