我有这个查询,这会返回几乎相同的两列,除了两列,它们看起来像这样:
条目1:LOTNUM = TAOM7U034N,OPCODE = 8385,DATEADDED = 2015-09-04 05:19:00,DATERELEASED = 2015-09-09 15:41:00
条目2:LOTNUM = TAOM7U034N,OPCODE = 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秒快得多。但是,这将返回第一个条目,即旧日期。我需要最新的日期,这是第二个条目。
答案 0 :(得分:1)
如果您对选择中包含的其他字段感到满意,您可以尝试这样的事情。
SELECT
LOTNUM,
OPCODE,
DATERELEASED,
MAX(DATEADDED)
FROM
HOURLY_FT_WIP.CACHE_IRAC_HOLD_LOTS AS i
WHERE
LOTNUM IN('TAOM7U034N')