2

我有以下 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其中SELECTsMySQL不幸的是,据我所知,我上面的内容是关于我的知识!

4

2 回答 2

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
于 2013-10-25T14:20:10.223 回答
0

您只是按 t.submission_id 分组,没有别的,所以这个查询不起作用。其他属性需要添加到GROUP BY或需要从 中删除SELECT

就排序而言,添加MAX(t.date_time)或添加MIN(t.date_time)到您的SELECT然后ORDER BY结果是升序或降序。

于 2013-10-25T14:18:42.657 回答