SQL中对于两个不同的表中的属性取差集except运算

SQL中对两个集合取差集运算,使用except关键字,语法格式如下:

SELECT column_name(s) FROM table_name1
EXCEPT
SELECT column_name(s) FROM table_name2

输出为在前一个集合中存在,而不存在于第二个集合的元组。

如果,选取两个元组,并且元组名称不同会出现什么结果呢?

使用之前使用过的示例,构建代码如下:

create table employee
(empname     char(6),
numchildren    int
)

create table dependent
(depname     char(6),
age    int
)

insert into employee values(haohao,2);
insert into employee values(haohao,4);
insert into employee values(fgsd,5);
insert into employee values(hds,7);
insert into employee values(hauuo,9);
insert into employee values(hsao,4);
insert into employee values(hhao,5);


insert into dependent values(haohao,2);
insert into dependent values(hdgso,2);
insert into dependent values(hreo,2);
insert into dependent values(hjh,2);
insert into dependent values(haaao,2);

  对于两个含有不同属性的工作表,使用except操作:

(select  empname,numchildren
from employee)
except
(select depname,age
from dependent)

输出结果如下:

"hds ";7
"hhao ";5
"hsao ";4
"hauuo ";9
"haohao";4
"fgsd ";5

列的名字为“empname”和“numchildren”,是employee的属性。

测试完毕,except操作还是会根据定义,筛选出符合要求的结果。

  

 

  现在玩点新花样

如果是,两个表的属性数目不同,会出现什么样的结果呢?

新构建一个数据表,代码如下:

create table newone
(newname     char(6),
newnum    int,
tel        int
)

插入数据:

insert into newone values(haohao,2,6);
insert into newone values(haohao,5,6);
insert into newone values(haoyo,2,6);
insert into newone values(h6ao,2,6);
insert into newone values(hrhao,2,6);

语句出错,显示结果为:

错误: 每一个 EXCEPT 查询必须有相同的字段个数
LINE 4: (select depname,age
^

********** Error **********

错误: 每一个 EXCEPT 查询必须有相同的字段个数
SQL state: 42601

Character: 57

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。