Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como comparar duas colunas no MySQL


Às vezes você pode precisar comparar duas colunas da mesma tabela ou tabela diferente, no MySQL. O MySQL permite comparar facilmente duas colunas usando operadores, bem como consultas aninhadas. Neste artigo, veremos como comparar duas colunas no MySQL.



Como comparar duas colunas no MySQL


Veremos diferentes casos de uso para comparar duas colunas no MySQL



Compare duas colunas da mesma tabela


Digamos que você tenha a seguinte tabela sales(id, cost_price, selling_price) e você deseja comparar cost_price e selling_price colunas.
mysql> create table sales(id int, cost_price int, selling_price int);

mysql> insert into sales(id, cost_price, selling_price)
     values(1, 135, 215),
     (2,215, 145),
     (3,310,100);

mysql> select * from sales;
+------+------------+---------------+
| id   | cost_price | selling_price |
+------+------------+---------------+
|    1 |        135 |           215 |
|    2 |        215 |           145 |
|    3 |        310 |           100 |
+------+------------+---------------+

Aqui está a consulta SQL genérica para duas colunas de comparação (coluna1, coluna2) em uma tabela (tabela1).
mysql> select * from table1
       where column1 not in 
       (select column2 from table1);

Na consulta acima, atualize table1, column1 e column2 conforme sua necessidade.

Bônus de leitura:Como obter cada enésima linha no MySQL

Aplicaremos esta consulta para comparar duas colunas cost_price e selling_price , e exibe registros onde há uma incompatibilidade entre duas colunas.
mysql> select * from sales
       where cost_price not in
       (select selling_price from sales);
+------+------------+---------------+
| id   | cost_price | selling_price |
+------+------------+---------------+
|    1 |        135 |           215 |
|    3 |        310 |           100 |
+------+------------+---------------+

Você também pode usar operadores matemáticos (<,>, <>) caso queira comparar duas colunas numéricas. Aqui está um exemplo para exibir linhas onde cost_price>selling_price.
mysql> select * from sales where cost_price>selling_price;
+------+------------+---------------+
| id   | cost_price | selling_price |
+------+------------+---------------+
|    2 |        215 |           145 |
|    3 |        310 |           100 |
+------+------------+---------------+

Bônus de leitura:Como adicionar coluna de incremento automático no MySQL



Compare duas colunas de uma tabela diferente


Digamos que você também tenha outra tabela orders(id, cost_price, selling_price)
mysql> create table orders(id int, cost_price int, selling_price int);

mysql> insert into orders(id, cost_price, selling_price)
       values(1, 235, 215),
       (2,205, 105),
       (3,320,120);

mysql> select * from orders;
+------+------------+---------------+
| id   | cost_price | selling_price |
+------+------------+---------------+
|    1 |        235 |           215 |
|    2 |        205 |           105 |
|    3 |        320 |           120 |
+------+------------+---------------+

Bônus de leitura:as 5 principais ferramentas gratuitas de design de banco de dados

Aqui está a consulta SQL acima modificada para comparar duas colunas de tabelas diferentes table1 e table2
mysql> select * from table1
       where column1 not in 
      (select column2 from table2);

Aplicaremos a consulta acima para comparar cost_price coluna de vendas tabela com selling_price com pedidos tabela.
mysql> select * from sales
       where cost_price not in 
      (select selling_price from orders);
+------+------------+---------------+
| id   | cost_price | selling_price |
+------+------------+---------------+
|    1 |        135 |           215 |
|    3 |        310 |           100 |
+------+------------+---------------+

O Ubiq facilita a visualização de dados e o monitoramento em painéis em tempo real. Experimente o Ubiq gratuitamente.