Este tutorial mostrará como usar a auto-junção do MySQL para mesclar uma tabela com ela mesma e criar dados personalizados.
Uso Básico
A auto-junção do MySQL usa apelidos de tabela para garantir que você não repita a mesma tabela mais de uma vez em uma instrução.
NOTA: Se você não estiver familiarizado com aliases de tabela, considere nosso outro tutorial que explica o conceito completamente.
A sintaxe geral para usar uma auto-junção é semelhante a uma ao combinar duas tabelas. No entanto, usamos apelidos de tabela. Considere a consulta mostrada abaixo:
SELECIONE alias1.cols,alias2.cols A PARTIR DE tbl1 alias1,tbl2 alias2 ONDE [doença]
Casos de uso de exemplo
Vamos usar exemplos para entender como realizar self joins do MySQL. Suponha que você tenha um banco de dados com as seguintes informações (veja a consulta completa abaixo)
DERRUBAR ESQUEMA E SE EXISTE auto;CRIAR ESQUEMA auto;
USAR auto;
CRIAR TABELA Comercial(
Eu iria INT CHAVE PRIMÁRIA INCREMENTO AUTOMÁTICO ,
primeiro nome VARCHAR (255),
o email VARCHAR (255),
pagamento_id INT ,
inscrição INT
);
INSERIR EM Comercial(primeiro nome,o email,pagamento_id,inscrição) VALORES ('Valerie G. Phillip', '[email protegido]', 10001, 1), ('Sean R. Stories', '[email protegido]', 10005, 2), ('Bobby S. Newsome', '[email protegido]', 100010, 5);
Começaremos com uma junção INNER e, finalmente, uma junção à esquerda.
Self Join usando Inner Join
A consulta abaixo realiza uma junção INNER na tabela criada acima.
SELECIONE al1.* A PARTIR DE usuários al1 INTERNO JUNTE usuários al2 SOBRE al1.subscription=al2.subscription ORDENAR POR Eu iria DESC ;O resultado é mostrado abaixo:
Self Join usando Left Join
O exemplo de consulta abaixo explica como podemos usar a auto-junção com a junção à esquerda.
SELECIONE ( CONCAT (al1.first_name, '->',al2.email)) COMO detalhes,al1.payment_id A PARTIR DE usuários al1 DEIXOU JUNTE usuários al2 SOBRE al1.id=al2.id;O resultado da saída está abaixo:
Conclusão
Este guia o orientou sobre como usar a self join do MySQL para unir uma tabela a ele mesmo.
Obrigado por ler.