我的mysql数据库中有一个表:
CREATE TABLE `Category` (
`category_id` int(11) NOT NULL,
`title` varchar(20) COLLATE utf8_bin NOT NULL,
`parent_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
这个 parent_id
符合 category_id
表的类型(递归):
category_id title parent_id
1 David 0
2 Lenny 1
3 Tom 1
4 John 3
5 Donald 4
6 Kelly 2
我想在表上选择,但要将父项id作为标题,可以这样执行join select吗?它不会产生任何缓慢的问题吗?
1条答案
按热度按时间wooyq4lh1#
您可以将一个表连接到它本身。这里有一个你可以使用的查询;您可能需要稍微修改它以获得所需的精确列。
该查询将返回以下结果:
下面是一个sql小提琴,您可以使用它:http://sqlfiddle.com/#!9/a254cb/3号
编辑:如果你关心没有父母的大卫,这里有一个左连接的版本:http://sqlfiddle.com/#!9/a254cb/4号
edit:不,对于这样一个带有简单联接的小表,没有性能问题。