如何在SQL中比较两个不同表中的列
在这里,我们将看看如何在 SQL 中比较两个不同表的列。我们将举几个例子来看看我们如何以不同的方式做到这一点。
概述 :
在此,我们将了解执行所需操作的 SQL 查询概述 如何在 SQL 中比较两个不同表中的列。我们将在示例的帮助下理解每个概念。
步骤 1:创建数据库:
要创建数据库,请使用以下 SQL 查询,如下所示。
句法 -
create database_name;
例子 -
create STUDENTS_DATA
步骤 2:使用数据库:
使用这个数据库如下。
句法 -
use database_name;
例子 -
use STUDENT_DATA
步骤 3:创建表:
创建用于进行查询的表如下。
表 1:语法 –
create table table_name
(
column1 type,
column2 type,
...
);
例子 -
create table studentData1
(
roll_number int primary key,
firstname varchar(100),
lastname varchar(100),
marks int
);
步骤 4:插入记录:
在表 studentData1 中插入记录如下。
句法 -
insert into table_name(column1, column2 ...) values (value1, value2 ...);
插入 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);
第 5 步:创建 table2:
在这里,我们将使用 SQL 查询创建 studentData2,如下所示。
create table studentData2
(
id int primary key,
firstname varchar(100),
lastname varchar(100),
marks int
);
步骤 6:插入记录:
在表 studentData2 中插入记录如下。
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);
示例-1:
使用 where 子句比较两个不同表的列。它无法处理空值。
句法 :
(选择所有列的所有记录)
select * from table1, table
where
table1.col1 = table2.col2 and table1.col1 > someValue;
语法(替代):
(从表中选择特定列)
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;
询问 -
select * from studentData1, studentData2
where studentData1.roll_number = studentData2.id;
输出 :
根据 roll_number 和 id 的比较结果如下。roll_number firstname lastname marks id 2 isaac newton 412 2 3 marie curie 436 3 4 philip jsam 389 4 6 tucker jose 412 6
示例 2 :
使用连接按优先级在表中比较列。例如,左连接返回第一个表中的所有值和第二个表中不匹配记录的空值。同样,我们可以根据我们的要求使用右联接、内联接、完全联接和自联接。在下面的示例中,我们使用左连接基于 roll_number 和 id 列比较了两个表。
句法 -
select t1.col1, t1.col2... , t2.col1, t2.col2... ,
from table1 as t1 left
join table2 as t2 on
tabe1.col1 = table2.col1;
询问 -
select a.roll_number, a.firstname, b.id
from studentData1 as a left
join
studentData2 as b on
a.roll_number = b.id;
输出 :
根据左表即 sutdentData1 进行联接,如下所示。roll_number firstname id 1 albert 2 isaac 2 3 marie 3 4 philip 4 5 tom 6 tucker 6 7 drawn
示例 3 :
UNION 允许我们比较两种相同类型的表或数据集。一旦我们可以拥有两个表的联合,我们就可以使用联合来比较列。它可以快速检查任一表中丢失或更改的数据。它能够处理 where 子句无法处理的空值。
笔记 -
这仅在我们有相同类型的表时使用。
句法 -
select col1, col2, col3 ....
from (select col1, col2, col3 ...
from Table1 union all select col1, col2, col3 ...
from Table2)
cmpr order by ID;
例子 -
select * from
(select * from studentData1
where roll_number > 4
union all
select * from studentData2 where id < 6)
cmpr order by marks;
输出 :
如下比较 roll_number > 4 和 id < 6 的相同记录。roll_number firstname lastname marks 7 drawn csate 389 4 philip jsam 389 6 tucker jose 412 3 marie curie 436 5 tom jsam 452