如何在MySQL的子查询中指定父查询字段?

例如:

我已经用PHP编写了一个基本的公告板类型程序。

在数据库中,每个帖子都包含:id(PK)和parent_id(父帖子的ID)。如果帖子本身是父项,则其parent_id设置为0。

我正在尝试编写一个mySQL查询,该查询将查找每个父级帖子以及父级拥有的子级数。

$query = "SELECT id, (

SELECT COUNT(1)

FROM post_table

WHERE parent_id = id

) as num_children

FROM post_table

WHERE parent_id = 0";

棘手的是,第一个 不知道它应该引用子查询之外的第二个 ID 。我知道我可以执行SELECT id AS

id_tmp,然后在子查询中引用它,但是如果我还想返回ID并保持“ id”作为列名,那么我就必须执行一个返回我两列具有相同的数据(对我来说似乎很混乱)

$query = "SELECT id, id AS id_tmp, 

(SELECT COUNT(1)

FROM post_table

WHERE parent_id = id_tmp) as num_children

FROM post_table

WHERE parent_id = 0";

凌乱的方式很好用,但是我感到有机会在这里学习一些东西,所以我想我应该提出这个问题。

回答:

怎么样:

$query = "SELECT p1.id, 

(SELECT COUNT(1)

FROM post_table p2

WHERE p2.parent_id = p1.id) as num_children

FROM post_table p1

WHERE p1.parent_id = 0";

或者,如果您在p1.id上放置一个别名,您可能会说:

$query = "SELECT p1.id as p1_id, 

(SELECT COUNT(1)

FROM post_table p2

WHERE p2.parent_id = p1.id) as num_children

FROM post_table p1

WHERE p1.parent_id = 0";

以上是 如何在MySQL的子查询中指定父查询字段? 的全部内容, 来源链接: utcz.com/qa/434371.html

回到顶部