如何修复MySQL查询别名未知列?2018
服务器版本:5.6.38-MySQL社区服务器(GPL)如何修复MySQL查询别名未知列?2018,mysql,Mysql,服务器版本: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的结果 我已经试过在和之间使用,但都不起作用。别名是未知列 我想做的是 我想
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的结果
我已经试过在和之间使用,但都不起作用。别名是未知列
我想做的是
我想检索url的最近日期
示例:id、url、日期
1,facebook.com,2018年1月1日
2,谷歌网站,2018年1月2日
3,facebook.com,2018年1月5日
youtube.com,2018年1月6日
youtube.com,2018年1月1日
6,stackoverflow.com,2018年1月7日
7,stackoverflow.com,2018年1月8日
通过运行它应该检索的查询,
3,facebook.com,2018年1月5日
2,谷歌网站,2018年1月2日
youtube.com,2018年1月6日
stackoverflow.com,2018年1月8日 标准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
对所有结果进行分组,然后根据
标准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
生成别名max\u date并在同一查询中使用它。别名是在查询运行时生成的,因此您不应该在WHERE子句的条件下使用它。也许WHERE date=Max(date)
?您能解释一下您到底想提取什么吗?因为从查询中可以看出,即使没有包含WHERE子句,它也只会生成单行(日期最高的一行)。此外,结果行中的“max_date alias”和“date”列将具有相同的值,因为它实际上是具有最高日期的同一行。此外,如果它是单行,则不需要“订单依据”和“分组依据”。此外,如果您使用的是MAX(date),那么为什么要使用WHERE子句,因为MAX(date)也与WHERE条件类似。请解释一下你想要什么,好让我知道help@waqashsn检查我的更新示例检查我的更新答案。您正在生成别名max\u date并在同一查询中使用它。别名是在查询运行时生成的,因此您不应该在WHERE子句的条件下使用它。也许WHERE date=Max(date)
?您能解释一下您到底想提取什么吗?因为从查询中可以看出,即使没有包含WHERE子句,它也只会生成单行(日期最高的一行)。此外,结果行中的“max_date alias”和“date”列将具有相同的值,因为它实际上是具有最高日期的同一行。此外,如果它是单行,则不需要“订单依据”和“分组依据”。此外,如果您使用的是MAX(date),那么为什么要使用WHERE子句,因为MAX(date)也与WHERE条件类似。请解释一下你想要什么,好让我知道help@waqashsn检查我的更新示例检查我的更新答案。我现在非常理解。好的,让我解释一下,过一会儿。忘了小组了。。。它找回了所有。。。但是max_date只检索最新日期,不包括行。对不起,我不明白你的意思。如果你删除GROUPBY子句,你能告诉我返回的是什么吗?我现在非常理解。好的,让我解释一下,过一会儿。忘了小组了。。。它找回了所有。。。但是max_date只检索最新日期,不包括行。对不起,我不明白你的意思。如果删除GROUPBY子句,您能告诉我返回的是什么吗。