服务器版本:5.6.38 - MySQL社区服务器(GPL)
PHP版本:7.2.1
PHPMyAdmin:版本信息:4.7.7
这是我的mysql查询
SELECT r.id, r.url, MAX(date) as `max_date`, date
FROM report as r
WHERE max_date = date
GROUP BY id, url
ORDER BY bid DESC;
我想检索maxdate的结果。
我已经尝试了Having
和Between
它只是不起作用。别名是未知列
我想做的是,
我想要检索网址的最新日期。
示例:
id,url,date
1,facebook.com,2018年1月1日
2,google.com,2018年1月2日
3,facebook.com,2018年1月5日
4,youtube.com,jan 6,20188
5,youtube.com,2018年1月1日
6,stackoverflow.com,jan 7,20188
7,stackoverflow.com,2018年8月8日
通过运行查询,它应该检索,
3,facebook.com,2018年1月5日
2,google.com,2018年1月2日
4,youtube.com,jan 6,20188
7,stackoverflow.com,2018年8月8日
答案 0 :(得分:2)
标准SQL不允许引用WHERE中的列别名 条款
您不应在WHERE子句中使用别名,因为别名是在运行查询时生成的,并且在执行WHERE条件时可能尚未就绪。你得到的别名是未知列错误,因为MySQL在查询结果生成后才知道别名。因此,您不能在此处使用WHERE子句中的别名。
(问题编辑后添加)
您可以通过以下查询获得所需的结果:
SELECT r.id, r.url, MAX(date) as `max_date`
FROM report as r
GROUP BY id, url;
查询说明:在SELECT
子句中,您只提及要显示的列,MAX()
函数本身已经选择了最大值(因此您不需要WHERE子句),并且GROUP BY子句告诉结果根据id
然后url
对所有结果进行分组。