我有以下MySQL查询:
SELECT t.date_time, COUNT(t.submission_id) AS click_count, s.title, s.first_name, s.family_name, s.email, ut.ukip_name, a.advertiser_name
FROM recards.tracking t
INNER JOIN submissions s ON t.submission_id = s.submission_id
INNER JOIN form_settings fs ON t.form_id = fs.form_id
INNER JOIN advertisers a ON t.advertiser_id = a.advertiser_id
INNER JOIN db2829.ukip_titles ut ON fs.ukip_title_id = ut.ukip_title_id
WHERE t.advertiser_id = 621
GROUP BY t.submission_id
ORDER BY t.date_time DESC
然而,当然,因为ORDER BY
是在GROUP BY
之后完成的,所以我只获得了第一条记录,而我需要的是最后一条记录。在调查中,我了解到在MAX()
期间在列上使用SELECT
,但这不适用于datetime
类型。
还有其他的解决方法吗?也许在SELECTs
中嵌入SELECTs
?不幸的是,我的上述内容是关于MySQL
知识的内容!
答案 0 :(得分:1)
原来我只是忘记AS
之后的MAX()
,MAX(t.date_time) AS top_time
它可以正常工作。
我的完整查询工作:
SELECT MAX(t.date_time) AS top_time, COUNT(t.submission_id) AS click_count, s.title, s.first_name, s.family_name, s.email, ut.ukip_name, a.advertiser_name
FROM recards.tracking t
INNER JOIN submissions s ON t.submission_id = s.submission_id
INNER JOIN form_settings fs ON t.form_id = fs.form_id
INNER JOIN advertisers a ON t.advertiser_id = a.advertiser_id
INNER JOIN db2829.ukip_titles ut ON fs.ukip_title_id = ut.ukip_title_id
WHERE t.advertiser_id = 621
GROUP BY t.submission_id
ORDER BY top_time DESC
答案 1 :(得分:0)
您只是按t.submission_id进行分组而不是其他任何内容,因此此查询将无效。其他属性需要添加到GROUP BY
或需要从SELECT
中删除。
根据排序,将MAX(t.date_time)
或MIN(t.date_time)
添加到您的SELECT
,然后将ORDER BY
添加到升序或降序。