Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 检索别名的基础列名_Mysql_Sql_Subquery - Fatal编程技术网

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
添加别名吗?但是您需要使用聚合函数的原始列名进行检索?啊,我明白了。。您的计算机生成此
子查询
,但无法将其用于聚合,因为别名总是在更改。。这是你的问题吗?如果你不知道你正在使用的列,你就不能设置条件。我不能更改子查询。