有人可以向我解释这个SQL查询吗?
我正在阅读这篇文章,我正在尝试理解这个SQL语句,但我仍然对SQL有些新意。
我不确定评论和c是什么意思。
我认为其中一个是表名,但我不确定另一个。此外,显然其中有一个子查询,我没有任何经验:
SELECT c.id, c.user_id, c.body, c.deep, c.lineage, c.parent_id,
(SELECT COUNT(*)
FROM comment
WHERE comment.lineage LIKE (CONCAT(c.lineage,'%'))
AND comment.lineage != c.lineage) AS replies
FROM comment as c
ORDER BY c.lineage
没有找到相关结果
已邀请:
7 个回复
献导外拘
第一个列表是要选择的所有字段,前缀为
,后面是
表的别名。 查询中的查询是一个子查询,它运行该查询并执行类似操作并将
与
(通配符)连接起来。该子查询结果保存在
中。 结果按
排序。
疏腔傻小雹
是用
定义的名为
的表的别名。
矾醒忻
确实是此查询中表的名称。
是用于该表的别名(在语法
中),因此查询中的其他地方只需用
而不是整个表名引用
表。 在这种特殊情况下,子查询也在同一个表中查询,别名允许它从父查询引用同一个表。这在这里很有用,因为在子查询的上下文中,
是一个静态值(从父查询返回的每行),用于过滤子查询中的行(用
)。然后,子查询可以返回父查询的每一行的单个值,并且该值在结果中别名为
。
捕暑句簿姓
指定的多个列,以及对此注释的回复数量,由ѭ20specified指定
戊袱
末钉蹈泰唬
铰齐插
关键字为某些内容创建别名,以便您以后可以明确地引用它。因此,
指的是表,
是同一个表的别名。这是特别有用的,因为你在两个不同的上下文中指代
(在主查询和子查询中)。 它还允许您将名称
分配给子查询的结果: