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: Etapa 1: Criando o banco de dados: Sintaxe - create database_name;Exemplo - create STUDENTS_DATAEtapa 2: Usando o banco de dados: Sintaxe - use database_name;Exemplo - use STUDENT_DATAEtapa 3: Criando a tabela: 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 - 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: Passo 6: Inserindo registros: 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): Consulta - select * from studentData1, studentData2 where studentData1.roll_number = studentData2.id;Saída:
Exemplo-2: 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:
Exemplo-3: Nota - 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:
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 ShoppingPara usar este banco de dados: Syntax : USE database_name; USE ShoppingCriaçã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 : 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 : 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 : |