好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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中对于两个不同的表中的属性取差集except运算

标签:

查看更多关于SQL中对于两个不同的表中的属性取差集except运算的详细内容...

  阅读:29次