Como fazer comparação de dados em uma abela

Aqui, veremos como podemos comparar as colunas de duas tabelas diferentes em SQL. Daremos alguns exemplos para ver como podemos fazer isso de maneiras diferentes.

Visão geral:
neste, vamos entender a visão geral da consulta SQL para a operação necessária para executar Como comparar colunas em duas tabelas diferentes em SQL. Vamos entender cada conceito com a ajuda de exemplos. 

Etapa 1: Criando o banco de dados:
Para criar o banco de dados, use a seguinte consulta SQL da seguinte maneira.

Sintaxe -

create database_name;

Exemplo -

create STUDENTS_DATA

Etapa 2: Usando o banco de dados:
Para usar este banco de dados da seguinte maneira.

Sintaxe -

use database_name;

Exemplo -

use STUDENT_DATA

Etapa 3: Criando a tabela:
Criando uma tabela para fazer consultas da seguinte maneira.

Tabela 1: Sintaxe - 

create table table_name ( column1 type, column2 type, ... );

Exemplo -

create table studentData1 ( roll_number int primary key, firstname varchar(100), lastname varchar(100), marks int );

Passo 4: Inserindo registros: Inserindo registros na tabela studentData1 como segue.

Sintaxe -

insert into table_name(column1, column2 ...) values (value1, value2 ...);

Inserindo na tabela studentData1 -

insert into studentData1 (roll_number, firstname, lastname, marks) values (1, 'albert', 'einstein',356); insert into studentData1 (roll_number, firstname, lastname, marks) values (2, 'isaac', 'newton',412); insert into studentData1 (roll_number, firstname, lastname, marks) values (3, 'marie', 'curie',436); insert into studentData1 (roll_number, firstname, lastname, marks) values (4, 'philip', 'jsam',389); insert into studentData1 (roll_number, firstname, lastname, marks) values (5, 'tom', 'jsam',452); insert into studentData1 (roll_number, firstname, lastname, marks) values (6, 'tucker', 'jose',412); insert into studentData1 (roll_number, firstname, lastname, marks) values (7, 'drawn', 'csate',389);

Etapa 5: Criando a tabela2:
Aqui, criaremos o studentData2 usando a consulta SQL da seguinte maneira.

create table studentData2 ( id int primary key, firstname varchar(100), lastname varchar(100), marks int );

Passo 6: Inserindo registros:
Inserindo registros na tabela studentData2 como segue.

insert into studentData2 (id, firstname, lastname, marks) values (2, 'isaac', 'newton',412); insert into studentData2 (id, firstname, lastname, marks) values (3, 'marie', 'curie',436); insert into studentData2 (id, firstname, lastname, marks) values (6, 'tucker', 'jose',412); insert into studentData2 (id, firstname, lastname, marks) values (4, 'philip', 'jsam',389);

Exemplo-1: Usando a cláusula where para comparar colunas de duas tabelas diferentes. Ele não pode lidar com os valores nulos.

Sintaxe:


(para selecionar todos os registros com todas as colunas) select * from table1, table where table1.col1 = table2.col2 and table1.col1 > someValue;

Sintaxe (alternativa):
(para selecionar colunas específicas das tabelas)

select t1.col1, t2.col2,t3. col3 ...., t2.col1, t2.col2, t2.col3.... from table1 t1, table t2 where t1.col1 = t2.col2 and t1.col1 <> t2.col2;

Consulta -

select * from studentData1, studentData2 where studentData1.roll_number = studentData2.id;

Saída:
Resultado baseado na comparação de roll_number e id como segue.

roll_numberprimeiro nomeúltimo nomemarcasEu iria
2isaacNewton4122
3mariecurie4363
4Philipjsam3894
6comerJose4126

Exemplo-2:
Usando junções para comparar colunas por prioridade entre a tabela. Por exemplo, a junção à esquerda retorna todos os valores da primeira tabela e o valor nulo para os registros não correspondentes da segunda tabela. Da mesma forma, podemos usar right join, inner join, full join e self join de acordo com nossos requisitos. No exemplo abaixo, comparamos duas tabelas com base nas colunas roll_number e id usando a junção à esquerda.

Sintaxe -

select t1.col1, t1.col2... , t2.col1, t2.col2... , from table1 as t1 left join table2 as t2 on tabe1.col1 = table2.col1;

Consulta -

select a.roll_number, a.firstname, b.id from studentData1 as a left join studentData2 as b on a.roll_number = b.id;

Saída:
Junte - se com base na tabela à esquerda, ou seja, sutdentData1 da seguinte maneira.

roll_numberprimeiro nomeEu iria
1Albert 
2isaac2
3marie3
4Philip4
5Tom 
6comer6
7retirou 

Exemplo-3:
UNION nos permite comparar dois mesmos tipos de tabelas ou conjuntos de dados. Podemos usar união para comparar as colunas uma vez que podemos ter a união de ambas as tabelas. Ele pode verificar rapidamente quais são os dados ausentes ou alterados em qualquer uma das tabelas. Ele é capaz de manipular valores nulos que não podem ser manipulados pela cláusula where.

Nota - 
Isso só é usado quando temos o mesmo tipo de tabelas.

Sintaxe -

select col1, col2, col3 .... from (select col1, col2, col3 ... from Table1 union all select col1, col2, col3 ... from Table2) cmpr order by ID;

Exemplo -

select * from (select * from studentData1 where roll_number > 4 union all select * from studentData2 where id < 6) cmpr order by marks;

Saída:
mesmos registros comparados onde roll_number> 4 e id <6 como segue.

roll_numberprimeiro nomeúltimo nomemarcas
retiroucsate389
4Philipjsam389
6comerJose412
3mariecurie436
5Tomjsam452

Neste artigo, veremos como podemos comparar as linhas e colunas da mesma tabela em SQL. Daremos alguns exemplos para ver como podemos fazer isso de maneiras diferentes.

Para criar o banco de dados:

Syntax : CREATE database_name; CREATE Shopping

Para usar este banco de dados:

Syntax : USE database_name; USE Shopping

Criação de tabela para fazer consultas:

Syntax : CREATE TABLE table_name(column1 TYPE, column2 TYPE ... ); CREATE TABLE orders(order_id INT AUTO_INCREMENT PRIMARY KEY, order_date DATE, amount INT, customer VARCHAR(50), city VARCHAR(50));

Inserindo registros na tabela aluno:

Syntax : INSERT INTO table_name(column1, column2 ...) VALUES (value1, value2 ...); INSERT INTO orders(order_date, amount, customer, city) VALUES ('2020-10-01',100, 'john', 'london'), ('2020-10-02',125,'philip', 'ohio'), ('2020-10-03',140,'jose', 'barkley'), ('2020-10-04',160, 'tom', 'north carolina'); ('2020-11-02',128,'duck', 'ohio'), ('2020-09-04',150, 'tucker', 'north carolina');

Exemplo 1:

Comparando linhas da mesma tabela. No exemplo, estamos comparando as linhas imediatas para calcular as vendas feitas em um dia, comparando os valores de dois dias consecutivos.

Syntax for inner join : SELECT column_name(s) FROM table1 t1 INNER JOIN table1 t2 on t1.column1 = t2.column1; SELECT g1.order_id, g1.order_date,g1.amount, (g2.amount - g1.amount) AS daily_amount FROM orders g1 INNER JOIN orders g2 ON g2.order_id = g1.order_id + 1;

Saída :

Como fazer comparação de dados em uma abela

Exemplo 2:

A comparação de colunas na mesma tabela é possível com a ajuda de junções. Aqui estamos comparando todos os clientes que estão na mesma cidade usando o self join em SQL. A auto-junção é uma junção regular em que uma tabela é juntada por si mesma. Da mesma forma, uma tabela pode ser unida com junção à esquerda, junção à direita, junção interna e junção completa.

Syntax for self join : SELECT column_name(s) FROM table1 t1, table1 t2 WHERE condition1 and condition2 ... ; SELECT A.customer AS CustomerName1, B.customer AS CustomerName2, A.city FROM orders A, orders B WHERE A.order_id <> B.order_id AND A.city = B.city ORDER BY A.city;

Saída :

Como fazer comparação de dados em uma abela

Exemplo 3:

Neste exemplo, estamos comparando todo o order_id em que o valor do primeiro order_id é maior do que o valor do segundo order_id. Estamos usando a auto-junção para realizar essa comparação de colunas na mesma tabela.

SELECT A.customer AS CustomerName1, B.customer AS CustomerName2, A.order_id AS order_id_1, B.order_id AS order_id_2, A.amount AS Amount_by_1, B.amount AS Amount_by_2, (A.amount - B.amount) AS difference FROM orders A, orders B WHERE A.order_id <> B.order_id AND A.amount > B.amount;

Saída :

Como fazer comparação de dados em uma abela