我正在尝试通过比较awsi-client.jar
并查看它是否在eod_master的transactions
和tran_num
之间同时拥有start_tran_num
来更新我的end_tran_num
表格{1}}列值相同。
clinic
这是我试图运行的脚本,但它不会更新任何值。查询无休止地运行,没有任何更新。运行以下查询会显示我期望的结果,但似乎无法适应UPDATE查询。
UPDATE transactions
SET time_ran=e.time_ran
FROM transactions t
INNER JOIN eod_master e
ON e.clinic=t.clinic
WHERE (t.tran_num BETWEEN e.start_tran_num AND e.end_tran_num)
有什么想法吗?
答案 0 :(得分:3)
您需要使用update
的表别名:
UPDATE t
-------^
SET time_ran=e.time_ran
FROM transactions t INNER JOIN
eod_master e
ON e.clinic = t.clinic AND
(t.tran_num BETWEEN e.start_tran_num AND e.end_tran_num);
它无休止地运行,因为存在隐式cross join
。如果你没有杀死查询,那么它会更新transactions
中的所有行,并且有一些价值。
答案 1 :(得分:0)
你说它无休止地运行,这是否意味着你永远不会让它完成?
UPDATE transactions
SET time_ran=e.time_ran
FROM transactions t
INNER JOIN eod_master e
ON e.clinic=t.clinic
WHERE (t.tran_num BETWEEN e.start_tran_num AND e.end_tran_num)
此查询将更新Transactions中的每条记录。这不太可能是你想要做的,也可能是为什么更新无休止地继续下去。
UPDATE t
SET time_ran=e.time_ran
FROM transactions t
INNER JOIN eod_master e
ON e.clinic=t.clinic
WHERE (t.tran_num BETWEEN e.start_tran_num AND e.end_tran_num)
and t.time_ran<>e.time_ran or (t.time_ran is not and e.time_ran) is not null
这只会更新需要更新的记录。那可能是你的问题。