首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用别名的mysql查询抛出错误

使用别名的mysql查询抛出错误
EN

Stack Overflow用户
提问于 2015-08-13 02:23:19
回答 3查看 95关注 0票数 0

运行以下查询

代码语言:javascript
复制
SELECT p.id as pid,p.name as pname, p.email,p.phone,p.created as pcreated,
p.updated as pupdated, GROUP_CONCAT(g.name) AS groups FROM ft_smsender_persons p 
JOIN ft_smsender_persons2groups AS p2g ON p.id = p2g.person_id JOIN ft_smsender_groups AS g ON g.id = p2g.group_id 
WHERE 1=1 AND deleted = 0 AND p.id as pid LIKE '%7%' OR pname LIKE '%7%' OR 
email LIKE '%7%' OR phone LIKE '%7%' OR pcreated LIKE '%7%' 
OR pupdated LIKE '%7%' OR groups LIKE '%7%' group by pname, email ORDER BY pid asc

给我一个关于p.id as pid LIKE '%7%'的错误

如果我像使用pid like %7%一样使用它,它会给我一个错误,说pid是未知列

查询是动态生成的,所以我通过代码修复它的范围很小;在mysql中有什么方法吗?

EN

回答 3

Stack Overflow用户

发布于 2015-08-13 02:44:55

可以在查询选择列表中使用别名来为列指定不同的名称。您可以在GROUP BY、ORDER BY或HAVING子句中使用别名来引用列。

但,

标准SQL不允许引用列

WHERE子句中的别名。之所以施加此限制,是因为在计算WHERE子句时,可能尚未确定列值。

详情:https://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

票数 2
EN

Stack Overflow用户

发布于 2015-08-13 04:25:15

为了澄清Being Sunny说的..。不应对查询的where子句部分中的列使用别名,除非该列在聚合函数中被引用。在选择列之前,该查询使用where子句来确定如何使用联接条件缩小已联接表中的行的范围。因此,在非聚合函数的where子句中引用别名列名将导致Error 1054: unknown column name

尝试在where子句中从查询中删除这些别名:

代码语言:javascript
复制
SELECT p.id as pid, p.name as pname, p.email, p.phone, p.created as pcreated,
p.updated as pupdated, GROUP_CONCAT(g.`name`) AS groups FROM ft_smsender_persons p 
JOIN ft_smsender_persons2groups AS p2g ON p.id = p2g.person_id JOIN ft_smsender_groups AS g ON g.id = p2g.group_id 
WHERE 1=1 AND deleted = 0 AND p.id LIKE '%7%' OR p.`name` LIKE '%7%' OR 
p.email LIKE '%7%' OR p.phone LIKE '%7%' OR p.created LIKE '%7%' 
OR p.updated LIKE '%7%' OR `groups` LIKE '%7%' group by pname, email ORDER BY pid asc;
票数 1
EN

Stack Overflow用户

发布于 2015-08-13 04:14:28

WHERE子句中不能有别名。如果这是一个动态生成的查询,您可以考虑更改试图为'p.id‘提供别名'pid’的参数。这将删除结果集中的pid别名,但也会删除您得到的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31972692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档