我看到这个复杂的select语句有几个组件:别名和子查询
SELECT
u.ID, u.username, u.active, u.email, u.admin, u.banned, u.name,
(SELECT
GROUP_CONCAT( g.name SEPARATOR'-groupsep-' ) FROM groups g,
group_memberships gm
WHERE g.ID = gm.group AND gm.user = u.ID
) AS groupmemberships
FROM users u WHERE u.ID={$uid}
对我来说没有意义的部分是AS groupmemberships
部分。
什么是别名? u.name
后面的元素?
我不熟悉子查询语法。
任何有用的解释和官方文档的链接都会有所帮助。
答案 0 :(得分:1)
此查询在查询的FROM
子句中使用子查询。子查询返回一组行,而这些行又被查询的其余部分用作表。在MySQL中,必须为此“虚拟表”提供别名。
具体而言,名称groupmemberships
是指
SELECT
GROUP_CONCAT( g.name SEPARATOR'-groupsep-' )
FROM
groups g, group_memberships gm
WHERE
g.ID = gm.group
AND gm.user = u.ID
更详细的解释可以在the MySQL documentation about subqueries in the FROM clause中找到。
答案 1 :(得分:1)
子查询在SELECT语句的FROM子句中是合法的。实际语法是:
SELECT ... FROM(子查询)[AS]名称......
[AS] name子句是必需的,因为FROM子句中的每个表都必须具有名称。
所以基本上我可以给我的结果表一个名称,并在外部查询中将它作为表本身使用。
希望有所帮助:)
答案 2 :(得分:0)
它是子查询结果的列名。没什么好说的
Select V1,V2,(V1 + V2) As Total From SomeTableOfVs