我有一个数据集,其中包含 ID、状态日期(序号)和状态类型。
- 状态类型为
打开
、传输
或关闭
- 主键是 ID 和状态日期的组合。所以一个ID会有多个 记录。
我正在尝试选择包含最新状态类型为“开放”或“转移”的日期范围内的 ID 的数据子集。
SELECT id,
status_date,
Date_format(Str_to_date(status_date, '%Y%j'), '%m/%d/%Y'),
status_type
FROM my.TABLE
WHERE ( ( ( status_type = 'O' )
OR ( status_type = 'T' ) )
AND ( status_date <= 2012182 ) )
我应该使用 MAX(Status_Date)
还是 LAST(Status_Date)
函数?
最佳答案
LAST
不是有效的 MySQL 函数,因此 MAX
是合适的函数。您也不需要所有这些括号。
WHERE ( status_type = 'O'
OR status_type = 'T' )
AND status_date <= 2012182
您也可以使用 IN
指定 status_type
的列表。
WHERE status_type IN ('O', 'T')
AND status_date <= 2012182
关于mysql - 选择日期范围内最新的合格类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15575884/