Filtrar por colunas idênticas em Bancos de Dado com SQL Query

Procurando uma forma de filtrar por colunas idênticas suas linhas de uma tabela de banco de dados SQL, MySQL ou MariaDB? Procurando por uma Query para jogar no console?

Recentemente passei por uma situação onde era necessário filtrar em uma tabela dos bancos de dados e exibir apenas linhas que tinham duas colunas com os mesmos valores em texto. Depois de horas buscando encontrei a simples solução e estou compartilhando para vocês.

Eu não sou nenhum programador, e acredito que a maioria das pessoas que buscam por essas dicas também não tem tanta noção assim dos códigos.

Costumo usar o programa Navicat para editar banco de dados, ele é bastante rápido e prático, além de permitir editar as linhas e colunas com liberdade igual ao Excel da Microsoft ou Numbers da Apple.

Já a maioria das pessoas usa o PhpmyAdmin para gerir os bancos de dados do seu site. Ambos permitem executar scripts através da aba SQL ou Query.

Usando SQL Query para filtrar

Como não sou nenhum profissional em banco de dados, eu não sabia que dá para exibir tabelas filtradas através de um código de query, mas felizmente acabei descobrindo.

Meu uso no banco de dados é inteiramente para deletar linhas, procurar textos e usar o Search and Replace, eu não tinha ideia de que os códigos de SQL são super úteis.

Eu pessoalmente usei esses códigos para verificar erros de tradução e encontrar linhas que não foram traduzidas nas tabelas de banco de dados do Translatepress.

Filtrar por colunas idênticas em bancos de dado com sql query - sql filtro navicat

Código SQL Query

Os códigos abaixo são úteis para:

  • Encontrar linhas iguais de colunas diferentes;
  • Encontrar linhas diferentes de colunas diferentes;
  • Encontra conteúdo igual em duas colunas;
SELECT * FROM `databasename`.`tablename` WHERE colum01 = colum02 ORDER BY `id` LIMIT 500 OFFSET 0; 

O código que acabamos de ver usa WHERE colum01 = colum02 para exibir linhas que tenham resultados iguais nas duas colunas. O código pode ser estendido para mais colunas caso desejar.

Caso você queira adicionar os filtros tradicionais para encontrar determinado texto você pode estender o script antes de ORDER BY colocando um AND como no código abaixo:

SELECT * FROM `databasename`.`tablename` WHERE colum01 = colum02 AND (`colum01` LIKE '%text%') ORDER BY `id` LIMIT 500 OFFSET 0; 

Depois do AND temos um código entre parenteses que filtra o texto apenas na coluna 01. Se utiliza LIKE para encontrar linhas com contendo o valor filtrado ou NOT LIKE para encontrar linhas que não contém o valor.

O scirpt pode ser estendido mais ainda utilizando AND e outros códigos. Agora para terminar vamos exibir outro código, mas ao invés de exibir linhas com valores iguais, ele exibe linhas com valores diferentes usando !=.

SELECT * FROM `databasename`.`tablename` WHERE colum01 != colum02 ORDER BY `id` LIMIT 500 OFFSET 0; 

Espero que esse código ajude você a realmente filtrar e buscar por linhas com valores iguais ou diferentes de colunas separadas usando filtros convencionais LIKE e NOT LIKE.