我有2张桌子
aaa
on_date datetime null,
channel_id numeric(10,0) null,
type_id numeric(10,0) null,
amount numeric(10,0) null
bbb
channel_id numeric(10,0) null
type_id numeric(10,0) null
我想将 aaa.amount 的更新更新为0
或
只有公共channel_ids和所有type_ids时 bbb.type_id为null
AAA
2014-09-13 1 3 12
2014-09-13 1 4 16
2014-09-13 2 1 11
bbb(案例1)
1 3
bbb(案例2)
1 null
在第一种情况下,只有第一个aaa记录的数量应为0 在第二种情况下,aaa的前2个记录的数量应为0 谢谢
答案 0 :(得分:2)
试试这个:
update a
set a.amount=0
from aaa a inner join bbb b
on a.channel_id=b.channel_id
where ((a.channel_id=b.channel_id and a.type_id=b.type_id and b.type_id IS NOT NULL)
OR (a.channel_id=b.channel_id and b.type_id IS NULL))
答案 1 :(得分:1)
根据我的理解你的问题,你需要做出类似的事情
UPDATE
aa
SET
aa.amount = 0
FROM
aaa aa
JOIN
bbb bb ON aa.channel_id =bb.channel_id
WHERE
(aa.type_id = bb.type_id AND bb.type_id is not null )
OR
(bb.type_id is null)
希望它对你有所帮助。