if exist 话语
if exists
(SELEC T.TRANSID FROM LOG T WHERE T.ORG_ID = '455755717' AND T.DATA_TYPE = '1002' AND T.GATHER_DATE = '2015-04-29' )
begin
UPDATE LOG T SET T.TRANSID = '165e9169c9e646c199cf973df1e3b5be',T.DATA_ERRFLAG = '1',T.DATA_SAVE = 0 , T.DATA_TOTAL = 0 WHERE T.ORG_ID = '455755717' AND T.DATA_TYPE = '1002' AND T.GATHER_DATE = '2015-04-29'
end
else
begin
INSERT INTO LOG (ORG_ID, GATHER_DATE, DATA_TYPE, TRANSID, DATA_ERRFLAG) VALUES ('455755717',
'2015-04-29', '1002', '165e9169c9e646c199cf973df1e3b5be', '1')
end
语句很简单,判断数据库的表中是否存在某条记录,存在更新,不存在就插入
我想用一条语句实现,求SQL语句
上面语句出错
------解决思路----------------------
不能一条sql,
但是可以用两个sql
先update (大不了update空而已),后insert ....select ... where not EXISTS (....)
------解决思路----------------------
LZ 百度一下 MERGE 的用法,这个比较适合这个场景。
------解决思路----------------------
百度一下 MERGE,有则更新,无则插入
------解决思路----------------------
试一下:
merge into LOG T
using (select '455755717' ORG_ID,
'1002' DATA_TYPE,
'2015-04-29' GATHER_DATE
from dual) b
on (T.ORG_ID = b.ORG_ID AND T.DATA_TYPE = b.DATA_TYPE AND T.GATHER_DATE = b.GATHER_DATE)
when matched then
update
SET T.TRANSID = '165e9169c9e646c199cf973df1e3b5be',
T.DATA_ERRFLAG = '1',
T.DATA_SAVE = 0,
T.DATA_TOTAL = 0
when not matched then
insert
(ORG_ID, GATHER_DATE, DATA_TYPE, TRANSID, DATA_ERRFLAG)
VALUES
('455755717',
'2015-04-29',
'1002',
'165e9169c9e646c199cf973df1e3b5be',
'1');