Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用“HAVING”子句忽略SQL函数调用_Mysql_Sql - Fatal编程技术网

Mysql 使用“HAVING”子句忽略SQL函数调用

Mysql 使用“HAVING”子句忽略SQL函数调用,mysql,sql,Mysql,Sql,对于下面的查询,似乎完全忽略了MAX函数。MAX函数对查询结果没有影响 SELECT alarm_severity_id FROM alarm_notification WHERE alarm_life_cycle_id = 25 having MAX(event_timestamp); 这是您的查询: SELECT alarm_severity_id FROM alarm_notification WHERE alarm_life_cycle_id = 25 HAVING MAX(event

对于下面的查询,似乎完全忽略了MAX函数。MAX函数对查询结果没有影响

SELECT alarm_severity_id
FROM alarm_notification
WHERE alarm_life_cycle_id = 25
having MAX(event_timestamp);
这是您的查询:

SELECT alarm_severity_id
FROM alarm_notification
WHERE alarm_life_cycle_id = 25
HAVING MAX(event_timestamp);
HAVING子句的意思是:取时间戳的最大值。如果最大值不等于零或NULL,则一切正常。这完全等同于:

HAVING MAX(event_timestamp) <> 0
编辑:

要优化性能,请在报警\生命周期\ id和事件\时间戳上创建索引:

应该有正确的条件,如MAXevent_时间戳>100 如果使用MAX,则应该有group by 或者按照@Gordon Linoff所说的按+限制1排序。
查询不完整,需要在having语句中使用运算符和值,如

HAVING MAX(event_timestamp) = 100

您到底想做什么?

按事件排序\u时间戳描述限制1??具有MAXevent_时间戳;没有任何意义,本质上是无效的SQL。任何其他DBMS都会因为语法错误而拒绝该语句。您不需要group by来使用聚合函数。@Gordon Linoff您是对的,在这种情况下不需要group by。答案是Thnx Gordon。我明白你的意思。事实上,您发布的查询就是我之前使用的查询。但通知表中的记录数量可能非常庞大,从1到数百万不等。对于上面的查询,这不会对性能产生影响吗?有其他方法吗?你应该在事件的时间戳上有一个索引,然后看看。
create index alarm_notification_alci_et on alarm_notification(alarm_life_cycle_id, event_timestamp)
HAVING MAX(event_timestamp) = 100