MYSQL SELECT 加入相同 table
MYSQL SELECT Join on the same table
我的 MySql 数据库中有这个 Table:
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
符合table的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
我想在 table 上 select 但要获得 parent_id 作为标题,可以像这样加入 SELECT 吗?它不会造成任何缓慢的问题吗?
您可以将 table 加入到自身。这是您可以使用的查询;您可能需要稍微修改它以获得您想要的确切列。
select
child.title `child`,
parent.title `parent`
from
Category `child`
join Category `parent` on `child`.parent_id = `parent`.category_id
;
该查询将 return 这个结果:
child parent
--------------
Lenny David
Tom David
John Tom
Donald John
Kelly Lenny
这里有一个 SQL Fiddle 你可以玩:http://sqlfiddle.com/#!9/a254cb/3
编辑:如果您关心没有父母的大卫,这里有一个带有左连接的版本:http://sqlfiddle.com/#!9/a254cb/4
编辑:不,对于像这样具有简单连接的小型 table,没有性能问题。
我的 MySql 数据库中有这个 Table:
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
符合table的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
我想在 table 上 select 但要获得 parent_id 作为标题,可以像这样加入 SELECT 吗?它不会造成任何缓慢的问题吗?
您可以将 table 加入到自身。这是您可以使用的查询;您可能需要稍微修改它以获得您想要的确切列。
select
child.title `child`,
parent.title `parent`
from
Category `child`
join Category `parent` on `child`.parent_id = `parent`.category_id
;
该查询将 return 这个结果:
child parent
--------------
Lenny David
Tom David
John Tom
Donald John
Kelly Lenny
这里有一个 SQL Fiddle 你可以玩:http://sqlfiddle.com/#!9/a254cb/3
编辑:如果您关心没有父母的大卫,这里有一个带有左连接的版本:http://sqlfiddle.com/#!9/a254cb/4
编辑:不,对于像这样具有简单连接的小型 table,没有性能问题。