首页 > 解决方案 > 检索别名的基础列名

问题描述

假设我有以下查询。

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.LastnameUsersSub.COL_1234它可以完美地工作。但我需要一种基于别名检索原始列名的方法。子查询是由我无法更改的另一部分代码生成的,所以我对此没有影响。因为稍后我需要在查询中添加 where 子句,并且需要搜索别名字段。因此,在即将推出的功能中,查询将如下所示。

SELECT UserSub.Lastname 
FROM (
    SELECT UserId, Email, Firstname, Lastname as COL_1234 
    FROM Users
) 
as UsersSub
WHERE UserSub.Lastname LIKE '%son';

标签: mysqlsqlsubquery

解决方案


我认为这会起作用:

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';

推荐阅读