mysql在同一个表上选择join

643ylb08  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(400)

我的mysql数据库中有一个表:

  1. CREATE TABLE `Category` (
  2. `category_id` int(11) NOT NULL,
  3. `title` varchar(20) COLLATE utf8_bin NOT NULL,
  4. `parent_id` int(11) DEFAULT NULL
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

这个 parent_id 符合 category_id 表的类型(递归):

  1. category_id title parent_id
  2. 1 David 0
  3. 2 Lenny 1
  4. 3 Tom 1
  5. 4 John 3
  6. 5 Donald 4
  7. 6 Kelly 2

我想在表上选择,但要将父项id作为标题,可以这样执行join select吗?它不会产生任何缓慢的问题吗?

wooyq4lh

wooyq4lh1#

您可以将一个表连接到它本身。这里有一个你可以使用的查询;您可能需要稍微修改它以获得所需的精确列。

  1. select
  2. child.title `child`,
  3. parent.title `parent`
  4. from
  5. Category `child`
  6. join Category `parent` on `child`.parent_id = `parent`.category_id
  7. ;

该查询将返回以下结果:

  1. child parent
  2. --------------
  3. Lenny David
  4. Tom David
  5. John Tom
  6. Donald John
  7. Kelly Lenny

下面是一个sql小提琴,您可以使用它:http://sqlfiddle.com/#!9/a254cb/3号
编辑:如果你关心没有父母的大卫,这里有一个左连接的版本:http://sqlfiddle.com/#!9/a254cb/4号
edit:不,对于这样一个带有简单联接的小表,没有性能问题。

展开查看全部

相关问题