我想使用此查询搜索别名列:
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子句'
答案 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_users
和agent
具有相同名称的列的情况,因此最好明确列出您想要的列。