我运行此查询,希望它更新特定符号分配的安全名称和交易实体名称,而是更新两个表中具有相同名称的每条记录 - 从备份恢复的时间!
UPDATE
SymbolAssignments sa
JOIN
Securities s ON sa.SecurityId = sa.SecurityId
JOIN
TradingEntityNames en ON s.TradingEntityNameId = en.TradingEntityNameId
SET
s.Name = name,
en.Name = name
WHERE
sa.SymbolAssignmentId = symbolAssignmentId;
任何人都可以解释为什么WHERE子句没有效果,并且每一行都被更新了吗?
答案 0 :(得分:0)
我的愚蠢错误,这一行
Securities s ON sa.SecurityId = sa.SecurityId
应该是
Securities s ON s.SecurityId = sa.SecurityId
当然sa.SecurityId总是等于sa.SecurityId,因此所有记录都已更新。这是一个糟糕的问题,因为我认为通过确保WHERE子句限制范围来保护我免于擦除所有数据。事实上,对于UPDATE或DELETE,我总是先输入WHERE子句。这是一个好习惯,但这次没有拯救我。