Mysql 喜欢别名列

Mysql Like for alias column

我想使用此查询在别名列中进行搜索:

SELECT *, (SELECT `name` FROM agent WHERE agent.`id`=sys_users.`agent_id`) as agentName FROM `sys_users` where agentName like '%company%'

但是当我执行查询时,MySQL告诉我:

错误代码:1054 'where clause'

中的未知列 'agentName'

标准 SQL 不允许在 WHERE 子句中引用列别名(参见 manual)。您需要使用 HAVING 代替,即

SELECT *, 
   (SELECT `name` FROM agent WHERE agent.`id`=sys_users.`agent_id`) as agentName 
   FROM `sys_users` HAVING agentName like '%company%'

由于您希望能够 OR 条件,因此最好使用 JOIN

SELECT *
    FROM sys_users JOIN agent ON agent.id = sys_users.agent_id
    WHERE sys_users.username LIKE '%company%' OR agent.name LIKE '%company%'

请注意,在这种情况下,您需要注意 sys_usersagent 具有同名列的情况,因此最好明确列出您想要的列。