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

你可能感兴趣的:(sql)