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_users
和 agent
具有同名列的情况,因此最好明确列出您想要的列。
我想使用此查询在别名列中进行搜索:
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_users
和 agent
具有同名列的情况,因此最好明确列出您想要的列。