Mysql 如何缩短此sql查询

Mysql 如何缩短此sql查询,mysql,sql,Mysql,Sql,我在缩短此sql代码时遇到问题: SELECT (SELECT name FROM content_categories ccb WHERE ccb.id = (SELECT parent FROM content_categories cc WHERE cc.id = 57)) AS parent, (SELECT id FROM content_categories ccb WHERE ccb.id = (SELECT parent FROM content_categories cc WH

我在缩短此sql代码时遇到问题:

SELECT
(SELECT name FROM content_categories ccb WHERE ccb.id = (SELECT parent FROM content_categories cc WHERE cc.id = 57)) AS parent,
(SELECT id FROM content_categories ccb WHERE ccb.id = (SELECT parent FROM content_categories cc WHERE cc.id = 57)) AS parent_id,
(SELECT alias FROM content_categories ccb WHERE ccb.id = (SELECT parent FROM content_categories cc WHERE cc.id = 57)) AS parent_alias,
(SELECT name as subcategory FROM content_categories ccb WHERE ccb.id = 57) as sub,
(SELECT id as subcategory FROM content_categories ccb WHERE ccb.id = 57) as sub_id,
(SELECT alias as subcategory FROM content_categories ccb WHERE ccb.id = 57) as sub_alias

你能帮我提个主意吗。

我想你只是想要一个
左加入

SELECT cp.name as parent, cp.id as parent_id, cp.alias as parent_alias,
       cc.name as sub, cc.id as sub_id, cc.alias as sub_alias
FROM content_categories cc left join
     content_categories cp
     on ccp.id = cc.parent
WHERE cc.id = 57;

唯一的区别是,如果
cc.id=57
不存在,则不会返回任何行。您的版本将返回一行,其中所有列均为
NULL

我想您只需要一个
左联接

SELECT cp.name as parent, cp.id as parent_id, cp.alias as parent_alias,
       cc.name as sub, cc.id as sub_id, cc.alias as sub_alias
FROM content_categories cc left join
     content_categories cp
     on ccp.id = cc.parent
WHERE cc.id = 57;
唯一的区别是,如果
cc.id=57
不存在,则不会返回任何行。您的版本将返回一行,其中所有列均为
NULL