在sybase中使用self join更新语句

时间:2013-02-20 13:19:04

标签: sql sybase self-join

我有一个包含以下数据的表。

Emp_Id  Name    dept   cat
 1      abc             P
 1               HC     G
 2      def             P 
 2               ET     G
 3      ghi             P
 3               BC     G
 3               MN     G
 4      jkl             P
 4               LS     G
 4               LS     G

我想更新此表以获得输出记录,如。

Emp_Id     Name    dept    cat
     1      abc      HC     P
     2      def      ET     P
     3      ghi      BC     P
     4      jkl      LS     p

如果Emp_Id与两个不同的部门相关联,那么它应该更新任何一个部门(Emp_Id = 3)。如果一个Emp_Id与两个相同的部门相关联,那么它应该来一次(Emp_Id = 4)。 我正在使用以下查询

UPDATE Table1 
    SET a.dept = b.dept
    from Table1 a, Table1 b          
    WHERE
      a.Emp_Id=b.Emp_Id
      and a.cat='P'

但它没有为Emp_Id 3和4更新任何内容 有人可以帮忙吗?

谢谢, DHIRAJ

1 个答案:

答案 0 :(得分:0)

多步Psudeo代码,因为我不太了解sybase语法:

Get the results you're after in a select.
SELECT EMP_ID, max(name), max(Dept), max(cat)
FROM tableName
GROUP BY EMPI_ID

将这些结果插入临时表

删除你的表并从临时表中重新创建它。