sql >> Base de Datos >  >> RDS >> Mysql

Cómo comparar dos columnas en MySQL

A veces, es posible que necesite comparar dos columnas de la misma tabla o de una tabla diferente, en MySQL. MySQL le permite comparar fácilmente dos columnas utilizando operadores y consultas anidadas. En este artículo, veremos cómo comparar dos columnas en MySQL.


Cómo comparar dos columnas en MySQL

Veremos diferentes casos de uso para comparar dos columnas en MySQL


Compara dos columnas de la misma tabla

Supongamos que tiene la siguiente tabla ventas(id, costo_precio, precio_de_venta) y quieres comparar cost_price y precio_de_venta columnas.

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 |
+------+------------+---------------+

Aquí está la consulta SQL genérica a dos columnas de comparación (columna1, columna2) en una tabla (tabla1).

mysql> select * from table1
       where column1 not in 
       (select column2 from table1);

En la consulta anterior, actualice la tabla 1, la columna 1 y la columna 2 según sus requisitos.

Lectura adicional:Cómo obtener cada enésima fila en MySQL

Aplicaremos esta consulta para comparar dos columnas cost_price y precio_de_venta y mostrar los registros donde hay una discrepancia entre dos columnas.

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 |
+------+------------+---------------+

También puedes usar operadores matemáticos (<,>, <>) en caso de que quieras comparar dos columnas numéricas. Aquí hay un ejemplo para mostrar filas donde precio_costo>precio_venta.

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

Lectura adicional:Cómo agregar una columna de incremento automático en MySQL


Compara dos columnas de una tabla diferente

Digamos que también tiene otra tabla pedidos(id, costo_precio, precio_de_venta)

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 |
+------+------------+---------------+

Lectura adicional:Las 5 mejores herramientas gratuitas de diseño de bases de datos

Aquí está la consulta SQL anterior modificada para comparar dos columnas de diferentes tablas table1 y table2

mysql> select * from table1
       where column1 not in 
      (select column2 from table2);

Aplicaremos la consulta anterior para comparar cost_price columna de ventas tabla con precio_de_venta con pedidos mesa.

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 |
+------+------------+---------------+

Ubiq facilita la visualización de datos y la supervisión en paneles en tiempo real. Prueba Ubiq gratis.