Mysql喜欢alias列

时间:2018-03-18 06:02:24

标签: mysql alias sql-like

我想使用此查询搜索别名列:

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

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

错误代码:1054 未知列' agentName'在' where子句'

1 个答案:

答案 0 :(得分:0)

标准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具有相同名称的列的情况,因此最好明确列出您想要的列。