Learning Hub Logo
SQL
  • Introdução ao SQL
  • Sintaxe SQL
  • SQL SELECT
  • SQL WHERE
  • SQL AND
  • SQL OR
  • SQL NOT
  • SQL ORDER BY
  • SQL INSERT INTO
  • SQL Valores NULL
  • SQL UPDATE
  • SQL DELETE
  • SQL LIMIT
  • SQL LIKE
  • SQL BETWEEN
  • SQL Aliases
  • SQL Funções de Agregação
  • SQL COUNT
  • SQL SUM
  • SQL AVG
  • SQL MIN e MAX
  • SQL GROUP BY
  • SQL HAVING
  • SQL Joins
  • SQL INNER JOIN
  • SQL LEFT JOIN
  • SQL RIGHT JOIN
  • SQL FULL OUTER JOIN
  • SQL Self Join
  • SQL UNION
  • Relacionamentos entre tabelas
  • SQL CREATE TABLE
  • SQL Constraints
  • SQL NOT NULL
  • SQL UNIQUE
  • SQL PRIMARY KEY
  • SQL FOREIGN KEY
  • SQL DEFAULT
  • SQL ALTER TABLE
  • SQL DROP TABLE
  • SQL Indexes
  • SQL Subconsultas
  • SQL Funções de String
  • SQL Funções de Data
  • SQL CASE WHEN
  • SQL Operadores e Funções Numéricas

Sobre Diego Pinho

Professor especialista em tecnologia com mais de 10 anos de experiência. Autor de livros técnicos e criador de cursos que já impactaram milhares de estudantes.

Visite meu site principal →

Serviços

  • Área do Aluno
  • Solicite um orçamento
  • Trabalhe Conosco

Redes Sociais

  • Youtube
  • TikTok
  • Instagram
  • LinkedIn

Links

  • Site Institucional
  • Nosso Blog
  • Cursos Online
  • Livros Publicados

Professor Diego Pinho

Educação, Tecnologia e IA © 2026

SQL›SQL Self Join

SQL Self Join

Como unir uma tabela com ela mesma para encontrar relações internas

⚡2 min de leitura

SQL Self Join

Um Self Join é quando você une uma tabela com ela mesma. Parece estranho à primeira vista, mas é muito útil quando os registros de uma tabela se relacionam entre si.

Quando usar?

O exemplo clássico é uma tabela de funcionários onde cada funcionário tem um campo gerente_id que aponta para outro funcionário da mesma tabela:

Tabela funcionarios:

idnomecargogerente_id
1Carlos SilvaDiretorNULL
2Ana SouzaGerente1
3Pedro LimaAnalista2
4Carla MendesAnalista2

Sintaxe

Como a mesma tabela é usada duas vezes, os aliases são obrigatórios:

Carregando...
funcionario   | gerente
--------------+--------------
Ana Souza     | Carlos Silva
Pedro Lima    | Ana Souza
Carla Mendes  | Ana Souza

Carlos Silva não aparece porque o gerente_id dele é NULL sem par no INNER JOIN.

Incluindo quem não tem gerente

Use LEFT JOIN para incluir registros sem correspondência:

Carregando...
funcionario   | gerente
--------------+--------------
Carlos Silva  | NULL
Ana Souza     | Carlos Silva
Pedro Lima    | Ana Souza
Carla Mendes  | Ana Souza

Outros casos de uso

O Self Join aparece sempre que uma tabela tem relacionamentos internos:

  • Categorias e subcategorias;
  • Produtos com produto "pai";
  • Hierarquias organizacionais;
  • Redes de referência (quem indicou quem).

O Self Join não tem uma sintaxe especial, é apenas um JOIN normal onde as duas tabelas são a mesma. A chave é usar aliases diferentes para distingui-las.

← AnteriorSQL FULL OUTER JOINPróximo →SQL UNION