Mysql 检索别名的基础列名
假设我有下面的问题Mysql 检索别名的基础列名,mysql,sql,subquery,Mysql,Sql,Subquery,假设我有下面的问题 SELECT UserSub.Lastname FROM ( SELECT UserId, Email, Firstname, Lastname as COL_1234 FROM Users ) as UsersSub; 这将导致一个错误 Error Code: 1054. Unknown column 'UsersSub.Lastname' in 'field list' 我知道它不起作用,因为子查询没有返回列Lastname。当我将UsersSu
SELECT UserSub.Lastname
FROM (
SELECT UserId, Email, Firstname, Lastname as COL_1234
FROM Users
)
as UsersSub;
这将导致一个错误
Error Code: 1054. Unknown column 'UsersSub.Lastname' in 'field list'
我知道它不起作用,因为子查询没有返回列Lastname
。当我将UsersSub.Lastname
更改为UsersSub.COL_1234
时,它可以完美地工作。但是我需要一种基于别名检索原始列名的方法。子查询是由我无法更改的代码的另一部分生成的,因此我对这一部分没有影响。因为稍后我需要在查询中添加where子句,并且需要搜索别名字段。因此,在接下来的功能中,查询将如下所示
SELECT UserSub.Lastname
FROM (
SELECT UserId, Email, Firstname, Lastname as COL_1234
FROM Users
)
as UsersSub
WHERE UserSub.Lastname LIKE '%son';
试试这个,它对我很管用
SELECT UserSub.Lastname
FROM (
SELECT UserId, Email, Firstname, Lastname, Lastname as COL_1234
FROM Users
)
as UsersSub
WHERE UserSub.Lastname LIKE '%son';
我认为这会奏效:
SELECT u.Lastname
FROM (
SELECT UserId, Email, Firstname, Lastname as COL_1234
FROM Users
) AS UsersSub
LEFT JOIN ON Users AS u WHERE UsersSub.UserId = u.UserId
WHERE UserSub.Lastname LIKE '%son';
为什么不打两次电话
LastName
和COL_1234
?@dwir182我不明白,你有例子吗?你想给LastName
添加别名吗?但是您需要使用聚合函数的原始列名进行检索?啊,我明白了。。您的计算机生成此子查询
,但无法将其用于聚合,因为别名总是在更改。。这是你的问题吗?如果你不知道你正在使用的列,你就不能设置条件。我不能更改子查询。