0
我正在尝试从一些cradel到我们的PBX的严重报告中找到最新的活动。我有以下的代码今天给了我所有的行动的一个伟大的观点为每剂:MySQL Max没有被选中具有多个连接的maximumn值
select e.`event_id`, `event_time` as event_time, e.g_event_id,
p.`agent_id`,
`a_name`, `a_number`
from `c2g`.`events` as e
left join `event_parties` as p on e.`g_event_id` = p.`g_event_id`
Left join `agent` as a on p.agent_id = a.agent_id
where p.agent_id is not null
and p.agent_id <> 0
order by event_time desc;
而下面的代码,应该只给我最新的事件为每个代理:
select e.`event_id`, MAX(`event_time`) as event_time, e.g_event_id,
p.`agent_id`,
`a_name`, `a_number`
from `c2g`.`events` as e
left join `event_parties` as p on e.`g_event_id` = p.`g_event_id`
Left join `agent` as a on p.agent_id = a.agent_id
where p.agent_id is not null
and p.agent_id <> 0
GROUP BY a_name
order by a_name asc;
但是我实际上并没有得到最新的事件,我得到了最近的事件,但总是有几个新事件被忽略。任何想法为什么发生这种情况?
这不是标准的SQL。为了获得更好的结果,不要依赖mysql特定的查询。所有选定的表达式都应显示在GROUP BY语句中。此外,GROUP BY默认情况下由ASC对表达式进行排序。你的声明是多余的 – Sebas 2014-10-08 16:16:37
'a_name'是从哪里来的?哪张桌子? – Sebas 2014-10-08 16:20:09