我正在尝试使用Codeigniter的Active Record在SQL查询中的HAVING子句中使用聚合函数。
function get_last_each()
{
$this->load->database();
$q = $this->db->from('points')->group_by('nodeid')->having('max(timestamp)', NULL)->get();
return $q->result_array();
}
它给了我一个数据库错误:
You have an error in your SQL syntax ...
SELECT * FROM (`points`) GROUP BY `nodeid` HAVING max(timestamp) =
如果我在第二个参数中使用
max(timestamp)
,则生成的查询将像= max(timestamp)
一样结束。还使用第三个参数禁止查询转义,但不成功。该查询在mysql客户端上运行良好:
mysql> select nodeid, timestamp from points group by nodeid having max(timestamp);
+-----------+---------------+
| nodeid | timestamp |
+-----------+---------------+
| 10EF7F | 1400497730790 |
| ADCFB2 | 1400501296786 |
...
如何使用具有功能的Codeigniter实现此目的?
最佳答案
您的hading子句没有意义,当您进行=,>等比较时使用了hading。活动记录库就像明智地寻找要比较的值一样
HAVING max(timestamp) =
相同的查询可以重新组织为
select nodeid, max(timestamp) from points group by nodeid
http://dev.mysql.com/doc/refman/5.0/en/group-by-extensions.html
关于mysql - 具有聚合函数MAX的Codeigniter Active Record HAVING子句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23738865/