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: 42601Character: 57