对于以下查询,MAX函数似乎完全被忽略.MAX函数对查询结果没有影响
SELECT alarm_severity_id
FROM alarm_notification
WHERE alarm_life_cycle_id = 25
having MAX(event_timestamp);
Run Code Online (Sandbox Code Playgroud)
这是您的查询:
SELECT alarm_severity_id
FROM alarm_notification
WHERE alarm_life_cycle_id = 25
HAVING MAX(event_timestamp);
Run Code Online (Sandbox Code Playgroud)
你的HAVING条款是说:取最大的时间戳.如果最大值不等于零或NULL,那么一切都很好.这完全等同于:
HAVING MAX(event_timestamp) <> 0
Run Code Online (Sandbox Code Playgroud)
我怀疑你想要:
SELECT alarm_severity_id
FROM alarm_notification
WHERE alarm_life_cycle_id = 25
ORDER BY event_timestamp DESC
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
编辑:
为了优化性能,在创建索引alarm_life_cycle_id和event_timestamp:
create index alarm_notification_alci_et on alarm_notification(alarm_life_cycle_id, event_timestamp)
Run Code Online (Sandbox Code Playgroud)