检查同一个表的两个不同列中的相同值,然后在sql中进行比较

时间:2017-05-15 14:58:07

标签: sql

cid       ctypeid  tid   check   asscid      ci
19149     6        2     0      NULL         0
253440    1        1     0      22297922     1
1361285   5        2     0      NULL         1
22297922  2        1     1      NULL         NULL
49821961  5        1     0      NULL         1

我必须检查asscid22297922是否在实际存在的cid列中。 所以我必须比较asscid在cid中的时间,然后在ci(其中asscidcid)的情况下得到253440的值在这种情况下为1,然后将ci的相同值1分配给cid22297922,在这种情况下为null

2 个答案:

答案 0 :(得分:1)

使用自我加入的更新。

选择

SELECT t.asscid, t2.cid, t.ci, t2.ci --We will next update t2.ci with t.ci
FROM table t
JOIN table t2 on t.asscid = t2.cid

更新

UPDATE t2
SET t2.ci = t.ci
FROM table t
JOIN table t2 on t.asscid = t2.cid

条件更新:(以便只更新具有不同ci的行)

UPDATE t2
SET t2.ci = t.ci
FROM table t
JOIN table t2 on t.asscid = t2.cid
              and t.ci <> t2.ci

答案 1 :(得分:0)

从emp A中选择Assid 存在的地方(从Emp B中选择1,其中a.assid = b.Cis)