我可以在MYSQL的HAVING子句中使用表别名吗?

我可以在MYSQL的HAVING子句中使用表别名吗?,mysql,Mysql,我可以在MySQL的子查询中使用外部查询中的表别名吗? 我使用的是mysql服务器5.7.21 如果是,为什么以下代码不起作用? 如果否,其语法原因是什么 表请求被接受 |a|u id | b|id |日期| |------|------|------------| | 1 | 2 | 2018-06-03 | | 1 | 3 | 2018-06-02 | | 2 | 3 | 2018-06-01 | |3 | 4 | 2018-06-05| 当我在havin

我可以在MySQL的子查询中使用外部查询中的表别名吗?
我使用的是mysql服务器5.7.21

如果是,为什么以下代码不起作用? 如果否,其语法原因是什么

表请求被接受 |a|u id | b|id |日期| |------|------|------------| | 1 | 2 | 2018-06-03 | | 1 | 3 | 2018-06-02 | | 2 | 3 | 2018-06-01 | |3 | 4 | 2018-06-05|

当我在having子句中不使用别名“x”而是使用整个查询时,它起作用了

SELECT id, COUNT(*) AS 'num' FROM (
SELECT a_id AS id FROM Date
UNION ALL
SELECT b_id AS id FROM Date
) x
GROUP by id
HAVING COUNT(*)>=ALL(SELECT COUNT(*) from x group by id )
运行时错误
表“test.x”不存在

您可以在HAVING子句中使用表别名,但不能在这样的子查询中使用。如果是较新版本的mysql,您可能会使用这样的CTE。如果您使用的是mysql 8.x,则可以通过使用CTE(公共表表达式)避免计算两次值。你的数据库版本是什么?5.x或8.x?请描述您试图实现的目标-我打赌有许多聪明的解决方案可以解决此groupwise max问题。您是否正在尝试查找请求和/或接受最多的ID?还是发送请求最多的那个?用例是什么?我使用的是mysql服务器5.7.21。根据您的评论,我可以在HAVING子句中使用表别名,但1)我不能在子查询中使用表别名?或者)我不能在HAVING子句内的子查询中使用表别名?如果是,是否有任何关于此语法错误的参考?@peter1fan2请编辑您的问题,使其包含一个,该问题可由产生此错误的其他人运行。有关SQL相关问题,请参阅,并将信息添加到问题中。可以在HAVING子句中使用表别名,但不能在类似的子查询中使用。如果是较新版本的mysql,您可能会使用这样的CTE。如果您使用的是mysql 8.x,则可以通过使用CTE(公共表表达式)避免计算两次值。你的数据库版本是什么?5.x或8.x?请描述您试图实现的目标-我打赌有许多聪明的解决方案可以解决此groupwise max问题。您是否正在尝试查找请求和/或接受最多的ID?还是发送请求最多的那个?用例是什么?我使用的是mysql服务器5.7.21。根据您的评论,我可以在HAVING子句中使用表别名,但1)我不能在子查询中使用表别名?或者)我不能在HAVING子句内的子查询中使用表别名?如果是,是否有任何关于此语法错误的参考?@peter1fan2请编辑您的问题,使其包含一个,该问题可由产生此错误的其他人运行。有关SQL相关问题,请参阅,并将信息添加到问题中。