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,没有性能问题。