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