如何用SQL语句查询两张表中的相同字段数据
SQL语句如下:
SELECT * from TABLE1 full join TABLE2 on TABLE1.xingming = TABLE2.xingming whereTABLE1.xingming is null or TABLE2.xingming is null
分析:
1、首先得出两个表的并集
注:full join :存在匹配,匹配显示;同时,将各个表中不匹配的数据与空数据行匹配进行显示。可以看成是左外连接与右外连接的并集。
图中结果左侧两列为TABLE1,右侧两列为TABLE2。前三条记录表示TABLE1和TABLE2都有的数据。
TABLE1项为NULL的记录说明TABLE2中无相同项。同理,TABLE2项为NULL的记录说明TABLE1中无相同项。
下面,只需要设置筛选条件,过滤出所需记录。
2、设置过滤条件,得到结果
从结果中可以看出,表1中的赵二在表2中没有相同xingming的记录。
表2中的刘六在表1中没有相同xingming的记录。
本题还有其它多种解法,此处列出比较好理解的一种。
扩展资料:
使用自联接
即使表在数据库中没有自反关系,也可将它与自身联接。 例如,可使用自联接查找生活在同一城市的作者对。
与任何联接一样,自联接至少需要两个表。 不同之处在于,不是向查询中添加第二个表,而是添加同一个表的第二个实例。 这样,可将表的第一个实例中的列与第二个实例中的同一列相比较,这样可相互比较列中的值。 查询和视图设计器为表的第二个实例分配一个别名。
例如,如果要创建自联接来查找居住在 Berkeley 内的所有作者对,可将表的第一个实例中的 city 列与第二个实例中的 city 列相比较。 所得到的查询可能类似于:
SELECT authors.au_fname, authors.au_lname, authors1.au_fname AS Expr2, authors1.au_lname AS Expr3
FROM authors INNER JOIN authors authors1 ON authors.city = authors1.city
WHERE authors.city = 'Berkeley'
参考资料:
百度百科.full join
好象没有简洁语法
当然如果用纯自然联接
可以把相同名字段合并成一个字段放在前面
不相同字段还是要显示出来的
下面提供两例子供参考
1.学生表和成绩表查出每个学生的各科总分,要求列出学号,姓名和总分
select a.学号,a.姓名,sum(b.分数) as 总分
from 学生表 a,成绩表 b where a.学号=b.学号
group by b.学号;
2.将a,b两表的日产量记录合并输出
select 日期,产量 from a union all
select 日期,产量 from b;
能枯17525736209: 在SQL中查询两张表中的相同字段数据时,可以采用UNION或UNION ALL语句。UNION ALL不会去除重复数据,而UNION会自动去除重复的行。例如,假设我们有两张表table1和table2,都包含codeid和cedename字段,我们想查询这两张表中相同的codeid和cedename数据,可以使用以下SQL语句:使用UNION ALL查询这两张表的...
能枯17525736209: 匹配两个表格中相同的数据,通常可以通过使用数据库查询语言或电子表格软件中的查找与匹配功能来实现。在数据库环境中,如果我们有两个表格A和B,并且想要找出它们之间共有的数据,我们可以使用SQL的“JOIN”操作。例如,假设表格A和B都有一个名为“ID”的列,我们可以执行以下SQL查...
能枯17525736209: 首先,尝试最直接的方法——使用INNER JOIN。当两张表(如t1和t2)的字段完全匹配时,通过INNER JOIN检查它们的关联,如:`SELECT * FROM t1 INNER JOIN t2 ON t1.ID = t2.ID AND t1.NAME = t2.NAME`。如果JOIN后的结果数量等于t1和t2表的总行数,那么数据一致。然而,这在数据存在重复时可...
能枯17525736209: 1、创建测试表;create table test_col_1(id number, var varchar2(200));create table test_col_2(id number, var varchar2(200));2、插入测试数据,insert into test_col_1 select level*8, 'var'||level*8 from dual connect by level <= 20;insert into test_col_2 select level, ...
能枯17525736209: 在数据库操作中,将一张表中的数据查询并插入到另一张表中,可以通过两种不同的SQL语句来实现。第一种方式是使用"select * into destTbl from srcTbl",这种方式要求目标表(destTbl)不存在,因为这条语句在执行时会自动创建目标表。如果目标表已经存在,则这条语句将无法执行。第二种方式是使用"...
能枯17525736209: 在SQL Server 2005及以上版本中,你可以使用Except运算符来找出两个表中的不同值。例如:Select * From A Except Select * From B 这段语句会返回A表中但不在B表中的所有记录。接下来,你可以使用Union运算符将A表和B表中各自独有的记录合并在一起:Union (Select * From B Except Select * ...
能枯17525736209: 1. 理解数据结构:首先,需要明确两个表格中的数据结构,包括字段名称、数据类型以及可能的索引。2. 选择匹配字段:找到两个表格中共同的字段,这些字段通常是用于匹配的关键。这些字段可以是ID、名称或其他任何可以唯一标识记录的字段。3. 使用SQL查询:编写SQL查询语句时,可以使用JOIN操作来连接两个表,...
能枯17525736209: SQL查询是一种强大的工具,用于从数据库中提取和分析数据。在处理多个表时,JOIN操作非常有用。例如,当我们需要从用户表(users)和帖子表(posts)中获取特定信息时,可以使用JOIN。这里有一个具体的例子:SELECT语句用于查询用户的姓名和帖子的所有信息。查询语句如下:SELECT users.u_name, posts.* FROM ...
能枯17525736209: select tableA.column1,tableA.column2 from tableA ,ableB where tableA .column1=tableB .column1 或者使用 union 方法,注意两个表选出来的字段至少要格式相同 select column1,column2,column3 from tableA union select column1,column2,column3 from tableB ...
能枯17525736209: 假设表1为table1 ,表2为table2 select a.col from (select column_name col from user_tab_columns where table_name = 'table1') a ,(select column_name col from user_tab_columns where table_name = 'table2') b where a.col = b.col 这样就可以查询出两个表得相同字段了 ...