{"id":12586,"date":"2023-12-18T07:11:36","date_gmt":"2023-12-18T10:11:36","guid":{"rendered":"https:\/\/www.homehost.com.br\/blog\/?p=12586"},"modified":"2023-12-18T07:11:43","modified_gmt":"2023-12-18T10:11:43","slug":"inner-join-sql","status":"publish","type":"post","link":"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/","title":{"rendered":"INNER JOIN: como combinar dados em SQL"},"content":{"rendered":"\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL-1024x694.png\" alt=\"inner join sql\" class=\"wp-image-12602\" width=\"1024\" height=\"694\" srcset=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL-1024x694.png 1024w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL-300x203.png 300w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL-768x520.png 768w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL.png 1079w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>A jun\u00e7\u00e3o de tabelas \u00e9 uma opera\u00e7\u00e3o comum em sistemas de gerenciamento de dados relacionais e INNER JOIN \u00e9 uma das opera\u00e7\u00f5es mais utilizadas para realizar essa tarefa. Assim, <strong>utilizamos para combinar linhas de duas tabelas com base em uma coluna comum, permitindo obter resultados mais abrangentes e detalhados para as consultas.<\/strong><\/p>\n\n\n\n<p>Al\u00e9m disso, tamb\u00e9m \u00e9 fundamental para manter a integridade referencial em sua base de dados, garantindo que as informa\u00e7\u00f5es relacionadas estejam sempre relacionadas entre si e asssim, essa pode ser usado em qualquer <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/o-que-e-um-banco-de-dados\/\" target=\"_blank\" rel=\"noreferrer noopener\">banco de dados<\/a>, como um banco <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/o-que-e-mysql\/\">MySQL<\/a> presente na&nbsp;<a href=\"https:\/\/www.homehost.com.br\/hospedagem-de-sites\/\" target=\"_blank\" rel=\"noreferrer noopener\">hospedagem de sites<\/a>&nbsp;Homehost.<\/p>\n\n\n\n<p>Neste artigo, vamos explorar em detalhes como funciona INNER JOIN no <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/o-que-e-sql\/\">SQL<\/a>, como usar essa opera\u00e7\u00e3o para combinar tabelas e obter resultados precisos, e como otimizar o uso de INNER JOIN em consultas complexas em conjuntos com outras fun\u00e7\u00f5es. <\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_72 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Conte\u00fado<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#Sintaxe\" title=\"Sintaxe\">Sintaxe<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#Diferenca_entre_INNER_JOIN_e_OUTER_JOIN\" title=\"Diferen\u00e7a entre INNER JOIN e OUTER JOIN\">Diferen\u00e7a entre INNER JOIN e OUTER JOIN<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#INNER_JOIN\" title=\"INNER JOIN\">INNER JOIN<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#OUTER_JOIN\" title=\"OUTER JOIN\">OUTER JOIN<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#Exemplos_praticos_de_como_usar_INNER_JOIN_em_diferentes_casos_de_uso\" title=\"Exemplos pr\u00e1ticos de como usar INNER JOIN em diferentes casos de uso\">Exemplos pr\u00e1ticos de como usar INNER JOIN em diferentes casos de uso<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#Tecnicas_avancadas_de_INNER_JOIN\" title=\"T\u00e9cnicas avan\u00e7adas de INNER JOIN\">T\u00e9cnicas avan\u00e7adas de INNER JOIN<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#Limitacoes_e_erros_comuns\" title=\"Limita\u00e7\u00f5es e erros comuns&nbsp;\">Limita\u00e7\u00f5es e erros comuns&nbsp;<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sintaxe\"><\/span>Sintaxe <span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>A sintaxe b\u00e1sica do INNER JOIN em SQL \u00e9 a seguinte:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT column1, column2, ...\nFROM table1\nINNER JOIN table2\nON table1.column = table2.column\n<\/code><\/pre>\n\n\n\n<p>O INNER JOIN \u00e9 usado para combinar duas ou mais tabelas com base em uma, ou mais colunas comuns. A cl\u00e1usula&nbsp;<code>ON<\/code>&nbsp;\u00e9 usada para especificar a condi\u00e7\u00e3o que deve ser satisfeita para que duas linhas sejam consideradas igual.<\/p>\n\n\n\n<p>Por exemplo, suponha que tenhamos duas tabelas,&nbsp;<code>students<\/code>&nbsp;e&nbsp;<code>courses<\/code>, que cont\u00eam informa\u00e7\u00f5es sobre os alunos e as aulas que eles est\u00e3o tomando. Portanto, para encontrar os alunos que est\u00e3o tomando duas aulas em uma determinada disciplina, podemos usar o INNER JOIN da seguinte maneira:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT s.name, c1.name AS course1, c2.name AS course2\nFROM students s\nINNER JOIN courses c1 ON s.student_id = c1.student_id\nINNER JOIN courses c2 ON s.student_id = c2.student_id\nWHERE c1.name = 'Matem\u00e1tica' AND c2.name = 'Matem\u00e1tica'\n<\/code><\/pre>\n\n\n\n<p>Neste exemplo, estamos usando o INNER JOIN para combinar as tabelas&nbsp;<code>students<\/code>&nbsp;e&nbsp;<code>courses<\/code>&nbsp;com base na coluna&nbsp;<code>student_id<\/code>, que est\u00e1 presente nas duas tabelas. Assim, estamos usando a cl\u00e1usula&nbsp;<code>WHERE<\/code>&nbsp;para filtrar apenas aqueles alunos que est\u00e3o tomando duas aulas com o nome &#8216;Matem\u00e1tica&#8217;. Dessa forma, o resultado ser\u00e1 uma lista de todos os alunos que est\u00e3o tomando duas aulas de matem\u00e1tica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Diferenca_entre_INNER_JOIN_e_OUTER_JOIN\"><\/span>Diferen\u00e7a entre INNER JOIN e OUTER JOIN<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>INNER JOIN e OUTER JOIN s\u00e3o tipos de joins em SQL usados para combinar duas ou mais tabelas. No entanto, eles t\u00eam algumas diferen\u00e7as importantes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"INNER_JOIN\"><\/span>INNER JOIN<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>O INNER JOIN \u00e9 usado para combinar duas tabelas com base em uma ou mais colunas comuns. Ele <strong>retorna apenas as linhas que correspondem a todas as condi\u00e7\u00f5es de join <\/strong>especificadas. Por exemplo, se queremos combinar duas tabelas,&nbsp;<code>students<\/code>&nbsp;e&nbsp;<code>courses<\/code>, com base na coluna&nbsp;<code>student_id<\/code>, que est\u00e1 presente nas duas tabelas, o INNER JOIN retorna apenas os alunos que est\u00e3o matriculados em pelo menos uma aula.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Exemplo de INNER JOIN:<\/li>\n<\/ul>\n\n\n\n<p>Para combinar as duas tabelas com base na coluna&nbsp;<code>student_id<\/code>, que est\u00e1 presente nas duas tabelas, podemos usar o INNER JOIN da seguinte maneira:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT s.name, c.name AS course_name, c.credits\nFROM students s\nINNER JOIN courses c ON s.student_id = c.student_id\n<\/code><\/pre>\n\n\n\n<p>O INNER JOIN acima ir\u00e1 combinar as tabelas&nbsp;<code>students<\/code>&nbsp;e&nbsp;<code>courses<\/code>&nbsp;com base na coluna&nbsp;<code>student_id<\/code>, e retornar\u00e1 apenas as linhas que correspondem a todas as condi\u00e7\u00f5es de join especificadas. Dessa forma, isso significa que apenas os alunos que est\u00e3o matriculados em pelo menos uma aula ser\u00e3o inclu\u00eddos no resultado.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"OUTER_JOIN\"><\/span>OUTER JOIN<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>J\u00e1 utilizamos o OUTER JOIN combinar duas tabelas com base em uma ou mais colunas comuns, mas ele retorna <strong>todas as linhas da tabela de origem,<\/strong> mesmo que n\u00e3o haja uma correspond\u00eancia no <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/join-sql\/\">join<\/a>. Existem tr\u00eas tipos de OUTER JOIN: LEFT JOIN, RIGHT JOIN e FULL JOIN (ou JOIN Nulo). Cada um deles retorna diferentes conjuntos de linhas, dependendo da tabela de origem que est\u00e1 sendo usada.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Exemplo de OUTER JOIN:<\/li>\n<\/ul>\n\n\n\n<p>Para combinar as duas tabelas com base na coluna&nbsp;<code>student_id<\/code>, mas incluir todas as linhas da tabela&nbsp;<code>students<\/code>, independentemente de ter uma correspond\u00eancia na tabela&nbsp;<code>courses<\/code>, podemos usar o LEFT JOIN da seguinte maneira:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT s.name, c.name AS course_name, c.credits\nFROM students s\nLEFT JOIN courses c ON s.student_id = c.student_id\n<\/code><\/pre>\n\n\n\n<p>Em resumo, a escolha entre <code>INNER JOIN<\/code> e <code>OUTER JOIN<\/code> depende das necessidades do neg\u00f3cio e da maneira como as tabelas est\u00e3o relacionadas. Portanto, podemos ver na imagem a baixo os tipos de JOIN e que cada um tem sua finalidade: <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/varios-join-sql-1024x1024.png\" alt=\"V\u00e1rios tipos de join\n \" class=\"wp-image-12603\" width=\"1024\" height=\"1024\" srcset=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/varios-join-sql-1024x1024.png 1024w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/varios-join-sql-300x300.png 300w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/varios-join-sql-150x150.png 150w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/varios-join-sql-768x768.png 768w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/varios-join-sql-24x24.png 24w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/varios-join-sql-48x48.png 48w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/varios-join-sql-96x96.png 96w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/varios-join-sql.png 1080w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<figure class=\"wp-block-image aligncenter size-full is-resized is-style-rounded\"><img decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/07\/gustavo.jpg\" alt=\"autor gustavo\" class=\"wp-image-9582\" width=\"186\" height=\"243\" \/><\/figure>\n<cite>Utilize esta imagem como refer\u00eancia e aprenda os diversos tipos de Join para trabalhar no dia a dia. Al\u00e9m disso, fa\u00e7a muitos exerc\u00edcios para aprender melhor sobre INNER JOIN no SQL &#8211; <em>Indica <\/em>Gustavo Carvalho<\/cite><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Exemplos_praticos_de_como_usar_INNER_JOIN_em_diferentes_casos_de_uso\"><\/span>Exemplos pr\u00e1ticos de como usar INNER JOIN em diferentes casos de uso<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>O INNER JOIN \u00e9 uma das opera\u00e7\u00f5es mais comuns em SQL e pode ser usado em conjunto com outras fun\u00e7\u00f5es e comandos para realizar tarefas complexas na manipula\u00e7\u00e3o de dados. Assim, aqui est\u00e3o alguns exemplos pr\u00e1ticos de como aplicarmos a opera\u00e7\u00e3o com outras fun\u00e7\u00f5es e comandos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Atualizar dados em uma tabela <\/strong><br>Podemos aplicar a opera\u00e7\u00e3o para <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/update-sql\/\">atualizar dados em uma tabela<\/a>. Dessa forma, aqui est\u00e1 um exemplo de como atualizar o endere\u00e7o de e-mail de um usu\u00e1rio em uma tabela de usu\u00e1rios com a tabela de contatos:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>UPDATE users\nSET email = c.email\nFROM users u\nJOIN contacts c ON u.id = c.user_id\nWHERE u.id = 1;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li><strong>Selecionar dados usando <code>INNER JOIN<\/code> com <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/case-when-sql\/\">CASE WHEN<\/a><\/strong><br>Podemos utilizar as duas opera\u00e7\u00f5es para selecionar dados com base em condi\u00e7\u00f5es. Assim, temos um exemplo selecionando os nomes dos usu\u00e1rios e seus e-mails, dependendo de se o usu\u00e1rio \u00e9 ativo ou inativo:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT users.name, contacts.email\nFROM users\nJOIN contacts ON users.id = contacts.user_id\nJOIN status ON contacts.status_id = status.id\nWHERE status.name = 'ativo' OR CASE WHEN status.name = 'inativo' THEN users.id = 1 ELSE 0 END;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><strong>Selecionar dados usando INNER JOIN com LIMIT e <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/count-sql\/\">COUNT<\/a><\/strong><br>Selecionando um n\u00famero espec\u00edfico de registros e <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/count-sql\/\">contar o n\u00famero<\/a> total de registros de uma tabela. Assim, estamos selecionando 10 usu\u00e1rios com mais contatos e mostrar o n\u00famero total de contatos:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT users.name, COUNT(contacts.id) as num_contacts\nFROM users\nJOIN contacts ON users.id = contacts.user_id\nJOIN status ON contacts.status_id = status.id\nGROUP BY users.id\nORDER\nBY num_contacts DESC\nLIMIT 10;<\/code><\/pre>\n\n\n\n<p>4.  <strong>Selecionar dados usando INNER JOIN com GROUP BY e DELETE<\/strong><\/p>\n\n\n\n<p>Podemos usar o INNER JOIN com a fun\u00e7\u00e3o <a href=\"https:\/\/www.homehost.com.br\/blog\/wordpress\/group-by-sql\/\">GROUP BY<\/a> e<a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/delete-into-sql\/\"> DELETE<\/a> para excluir registros duplicados de uma tabela. Exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DELETE FROM contacts\nFROM contacts c\nJOIN contacts c2 ON c2.user_id = c.user_id AND c2.id &lt;&gt; c.id\nGROUP BY c.user_id, c.id;<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li><strong>Selecionar dados usando INNER JOIN com <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/order-by-sql\/\">ORDER BY<\/a><\/strong><br>Aplicamos o INNER JOIN com a fun\u00e7\u00e3o <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/order-by-sql\/\">ORDER BY<\/a> para ordenar os resultados de uma consulta. Exemplo:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT contacts.name\nFROM contacts\nJOIN users ON contacts.user_id = users.id\nWHERE users.id = 1\nORDER BY users.name;\n<\/code><\/pre>\n\n\n\n<p>Esses s\u00e3o apenas alguns exemplos de como o <code>INNER JOIN<\/code> pode ser usado em conjunto com outras <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/principais-comandos-mysql\/\">fun\u00e7\u00f5es e comandos em SQL<\/a>. H\u00e1 muitas outras maneiras de usar o INNER JOIN, dependendo das necessidades espec\u00edficas de cada consulta e <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/comandos-avancados-mysql\/\">comandos avan\u00e7ados<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Tecnicas_avancadas_de_INNER_JOIN\"><\/span>T\u00e9cnicas avan\u00e7adas de INNER JOIN<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Al\u00e9m das t\u00e9cnicas b\u00e1sicas de<code> INNER JOIN<\/code>, existem algumas t\u00e9cnicas avan\u00e7adas que podem ser usadas para obter resultados mais precisos e eficientes. Aqui est\u00e3o alguns exemplos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>INNER JOIN com v\u00e1rios campos<\/strong><br>O INNER JOIN pode ser usado com v\u00e1rios campos em vez de apenas um campo da tabela. Isso permite que voc\u00ea selecione dados de v\u00e1rias tabelas com base em mais de um campo. Aqui est\u00e1 um exemplo de como selecionar os nomes dos usu\u00e1rios e os endere\u00e7os de e-mail de todos os contatos de um usu\u00e1rio:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT users.name, contacts.email\nFROM users\nJOIN contacts ON users.id = contacts.user_id\nJOIN status ON contacts.status_id = status.id;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li><strong>INNER JOIN com subconsultas<\/strong><br>Aplicamos o <code>INNER JOIN<\/code> com subconsultas para obter dados de tabelas maiores. Assim, aqui est\u00e1 um exemplo de como selecionar os nomes dos usu\u00e1rios e seus endere\u00e7os de e-mail, dependendo de se o usu\u00e1rio \u00e9 ativo ou inativo, usando uma subconsulta:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT users.name, contacts.email\nFROM users\nJOIN contacts ON users.id = contacts.user_id\nJOIN status ON contacts.status_id = status.id\nWHERE status.name = 'ativo' OR (status.name = 'inativo' AND users.id = 1);\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><strong>Cl\u00e1usulas WHERE compartilhadas<\/strong><br>Utilizamos o <code>INNER JOIN<\/code> com cl\u00e1usulas WHERE compartilhadas para especificar condi\u00e7\u00f5es que afetam as tabelas em que o utilizamos o JOIN. Assim, aqui temos um exemplo de como selecionar os nomes dos usu\u00e1rios e seus endere\u00e7os de e-mail, dependendo de se o usu\u00e1rio \u00e9 ativo ou inativo, e ignorar usu\u00e1rios com endere\u00e7os de e-mail vazios:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>\nSELECT users.name, contacts.email\nFROM users\nJOIN contacts ON users.id = contacts.user_id\nJOIN status ON contacts.status_id = status.id\nWHERE status.name = 'ativo' OR (status.name = 'inativo' AND users.id = 1) AND contacts.email IS NOT NULL;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li><strong>Cadeia de caracteres<\/strong><br>Utilizamos o <code>INNER JOIN<\/code> com cadeia de caracteres para separar campos em uma consulta. Assim , aqui est\u00e1 um exemplo de como selecionar os nomes dos usu\u00e1rios e seus endere\u00e7os de e-mail, separando os campos com uma v\u00edrgula:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT users.name, contacts.email\nFROM users\nJOIN contacts ON users.id = contacts.user_id\nJOIN status ON contacts.status_id = status.id\nFOR CE,CA IN (SELECT CONCAT(users.name, ',', contacts.email) AS nome_email FROM users\nJOIN contacts ON users.id = contacts.user_id\nJOIN status ON contacts.status_id = status.id)\nSELECT * FROM CE,CA;\n<\/code><\/pre>\n\n\n\n<p>Temos essas <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/pl-sql\/\">t\u00e9cnicas avan\u00e7adas<\/a> que utilizamos de <code>INNER JOIN<\/code> em SQL, obtendo resultados mais precisos e eficientes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Limitacoes_e_erros_comuns\"><\/span>Limita\u00e7\u00f5es e erros comuns&nbsp;<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Embora o <code>INNER JOIN<\/code> seja uma ferramenta poderosa para unir dados de diferentes tabelas em uma consulta, existem algumas limita\u00e7\u00f5es e erros comuns que voc\u00ea precisa ser ciente. Aqui est\u00e3o alguns exemplos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Depend\u00eancia de chave estrangeira<\/strong><br>Uma das limita\u00e7\u00f5es do <code>INNER JOIN<\/code> \u00e9 que ele depende da cria\u00e7\u00e3o de uma chave estrangeira na tabela de destino, ou seja, a chave estrangeira precisa est\u00e1 corretamente na tabela de destino para que o JOIN funcione corretamente. <\/li>\n\n\n\n<li><strong>Desempenho<\/strong><br>O <code>INNER JOIN <\/code>pode ser um processo lento, especialmente quando trabalhando com grandes quantidades de dados. Assim, isso pode afetar significativamente o desempenho do seu aplicativo. Para melhorar o desempenho, voc\u00ea pode precisar otimizar suas consultas usando t\u00e9cnicas de indexa\u00e7\u00e3o ou limitar o n\u00famero de registros retornados.<\/li>\n\n\n\n<li><strong>Erros de sintaxe<\/strong><br>O <code>INNER JOIN<\/code> pode ser vulner\u00e1vel a erros de sintaxe, especialmente quando a consulta \u00e9 complexa. Portanto, pode levar a resultados inesperados ou consultas que falham completamente. <\/li>\n\n\n\n<li><strong>Resultados duplicados<\/strong><br>O <code>INNER JOIN<\/code> pode produzir resultados duplicados se as tabelas de origem cont\u00eam registros duplicados. Dessa forma, levando a resultados inesperados ou consultas que falham completamente.<\/li>\n\n\n\n<li><strong>Exclus\u00e3o de dados<\/strong><br>O <code>INNER JOIN <\/code>pode excluir dados de uma tabela se n\u00e3o houver correspond\u00eancias na outra tabela.  Para evitar a exclus\u00e3o de dados, utilizamos uma cl\u00e1usula LEFT JOIN ou incluir uma cl\u00e1usula WHERE para limitar os resultados.<\/li>\n<\/ol>\n\n\n\n<p>Nesse sentido, essas s\u00e3o algumas das limita\u00e7\u00f5es e erros comuns que voc\u00ea precisa ser ciente ao usar INNER JOIN. Ao <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/cursos-de-sql-gratuitos\/\">evitar e aprender esses problemas comuns no SQL<\/a>, voc\u00ea pode ajudar a garantir que suas consultas sejam precisas e eficientes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A jun\u00e7\u00e3o de tabelas \u00e9 uma opera\u00e7\u00e3o comum em sistemas de gerenciamento de dados relacionais e INNER JOIN \u00e9 uma das opera\u00e7\u00f5es mais utilizadas para realizar essa tarefa. Assim, utilizamos para combinar linhas de duas tabelas com base em uma coluna comum, permitindo obter resultados mais abrangentes e detalhados para as consultas. Al\u00e9m disso, tamb\u00e9m [&hellip;]<\/p>\n","protected":false},"author":33,"featured_media":12602,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_helpful_status":1,"_lmt_disableupdate":"","_lmt_disable":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[30],"tags":[],"class_list":["post-12586","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mysql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>INNER JOIN: como combinar dados em SQL | Homehost<\/title>\n<meta name=\"description\" content=\"INNER JOIN une dados de diferentes tabelas com base em uma chave comum. \u00c9 uma ferramenta poderosa em SQL combinando dados de duas tabelas!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"INNER JOIN: como combinar dados em SQL | Homehost\" \/>\n<meta property=\"og:description\" content=\"INNER JOIN une dados de diferentes tabelas com base em uma chave comum. \u00c9 uma ferramenta poderosa em SQL combinando dados de duas tabelas!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/\" \/>\n<meta property=\"og:site_name\" content=\"Homehost\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Homehost\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-18T10:11:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-18T10:11:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1079\" \/>\n\t<meta property=\"og:image:height\" content=\"731\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sch\u00eania T\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Homehost\" \/>\n<meta name=\"twitter:site\" content=\"@Homehost\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sch\u00eania T\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/\",\"url\":\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/\",\"name\":\"INNER JOIN: como combinar dados em SQL | Homehost\",\"isPartOf\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL.png\",\"datePublished\":\"2023-12-18T10:11:36+00:00\",\"dateModified\":\"2023-12-18T10:11:43+00:00\",\"author\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa\"},\"description\":\"INNER JOIN une dados de diferentes tabelas com base em uma chave comum. \u00c9 uma ferramenta poderosa em SQL combinando dados de duas tabelas!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#primaryimage\",\"url\":\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL.png\",\"contentUrl\":\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL.png\",\"width\":1079,\"height\":731,\"caption\":\"inner join sql\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/www.homehost.com.br\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"INNER JOIN: como combinar dados em SQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#website\",\"url\":\"https:\/\/www.homehost.com.br\/blog\/\",\"name\":\"Homehost\",\"description\":\"Hospedagem De Sites\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.homehost.com.br\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa\",\"name\":\"Sch\u00eania T\",\"description\":\"Cientista de dados, apaixonada por ferramentas de tecnologia e games. Graduanda em Estat\u00edstica pela UFPB. Seu hobby \u00e9 maratonar s\u00e9ries, curtir uma boa m\u00fasica trabalhando ou cozinhando, ir ao cinema e aprender coisas novas! Contato: schenia.blog@homehost.com.br\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"INNER JOIN: como combinar dados em SQL | Homehost","description":"INNER JOIN une dados de diferentes tabelas com base em uma chave comum. \u00c9 uma ferramenta poderosa em SQL combinando dados de duas tabelas!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/","og_locale":"pt_BR","og_type":"article","og_title":"INNER JOIN: como combinar dados em SQL | Homehost","og_description":"INNER JOIN une dados de diferentes tabelas com base em uma chave comum. \u00c9 uma ferramenta poderosa em SQL combinando dados de duas tabelas!","og_url":"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/","og_site_name":"Homehost","article_publisher":"https:\/\/www.facebook.com\/Homehost\/","article_published_time":"2023-12-18T10:11:36+00:00","article_modified_time":"2023-12-18T10:11:43+00:00","og_image":[{"width":1079,"height":731,"url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL.png","type":"image\/png"}],"author":"Sch\u00eania T","twitter_card":"summary_large_image","twitter_creator":"@Homehost","twitter_site":"@Homehost","twitter_misc":{"Escrito por":"Sch\u00eania T","Est. tempo de leitura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/","url":"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/","name":"INNER JOIN: como combinar dados em SQL | Homehost","isPartOf":{"@id":"https:\/\/www.homehost.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#primaryimage"},"image":{"@id":"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL.png","datePublished":"2023-12-18T10:11:36+00:00","dateModified":"2023-12-18T10:11:43+00:00","author":{"@id":"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa"},"description":"INNER JOIN une dados de diferentes tabelas com base em uma chave comum. \u00c9 uma ferramenta poderosa em SQL combinando dados de duas tabelas!","breadcrumb":{"@id":"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#primaryimage","url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL.png","contentUrl":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL.png","width":1079,"height":731,"caption":"inner join sql"},{"@type":"BreadcrumbList","@id":"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/inner-join-sql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.homehost.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"INNER JOIN: como combinar dados em SQL"}]},{"@type":"WebSite","@id":"https:\/\/www.homehost.com.br\/blog\/#website","url":"https:\/\/www.homehost.com.br\/blog\/","name":"Homehost","description":"Hospedagem De Sites","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.homehost.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa","name":"Sch\u00eania T","description":"Cientista de dados, apaixonada por ferramentas de tecnologia e games. Graduanda em Estat\u00edstica pela UFPB. Seu hobby \u00e9 maratonar s\u00e9ries, curtir uma boa m\u00fasica trabalhando ou cozinhando, ir ao cinema e aprender coisas novas! Contato: schenia.blog@homehost.com.br"}]}},"modified_by":"ad_hmhst","jetpack_featured_media_url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/12\/INNER-JOIN-SQL.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/12586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/comments?post=12586"}],"version-history":[{"count":10,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/12586\/revisions"}],"predecessor-version":[{"id":12617,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/12586\/revisions\/12617"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/media\/12602"}],"wp:attachment":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/media?parent=12586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/categories?post=12586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/tags?post=12586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}