17,082
社区成员
发帖
与我相关
我的任务
分享
DECLARE @CheckMsgnr INT=0
UPDATE M SET
M.MSGNR=CASE @CheckMsgnr WHEN 0 THEN M.MSGNR ELSE T.MSGNR END,
M.MatchActive=T.MatchActive,
M.MatchStatus=T.MatchStatus,
M.BetStatus=T.BetStatus,
M.MatchScore=T.MatchScore
FROM MATCHES M JOIN TMP_MATCHES T ON M.MatchID=T.MatchID
WHERE (@CheckMsgnr=0 OR (@CheckMsgnr=1 AND M.MSGNR<=T.MSGNR))
UPDATE MATCHES M
SET
(
M."MSGNR",
M."MatchActive",
M."MatchStatus",
M."BetStatus",
M."MatchScore",
M."UpdateTS"
)
=
(
SELECT
CASE P_CHECKMSGNR WHEN 0 THEN M."MSGNR" ELSE T."MSGNR" END ,
T."MATCH_ACTIVE",
T."MATCH_STATUS",
T."BET_STATUS",
T."SCORE",
P_NOW
FROM TEMP_UPDATEMATCHSTATUS T
WHERE
M."MatchID"=T."MATCHID"
AND (P_CHECKMSGNR=0 or (P_CHECKMSGNR=1 AND M."MSGNR"<T."MSGNR"))
);
T."MSGNR",
IF P_CHECKMSGNR=0 THEN
UPDATE MATCHES M
SET
(
M."MatchActive",
M."MatchStatus",
M."BetStatus",
M."MatchScore",
M."UpdateTS"
)
=
(
SELECT
T."MATCH_ACTIVE",
T."MATCH_STATUS",
T."BET_STATUS",
T."SCORE",
P_NOW
FROM TEMP_UPDATEMATCHSTATUS T
WHERE
M."MatchID"=T."MATCHID"
);
ELSE
UPDATE MATCHES M
SET
(
M."MSGNR",
M."MatchActive",
M."MatchStatus",
M."BetStatus",
M."MatchScore",
M."UpdateTS"
)
=
(
SELECT
M."MSGNR",
T."MATCH_ACTIVE",
T."MATCH_STATUS",
T."BET_STATUS",
T."SCORE",
P_NOW
FROM TEMP_UPDATEMATCHSTATUS T
WHERE
M."MatchID"=T."MATCHID"
AND M."MSGNR"<T."MSGNR"
);
END IF;
用了个if else 把 update 分成2句 实现了 TSQL 一句的效果
请教高手们有没有一句话搞定的啊?