当记录不在另一个用户表中时,我试图更新一个表中的isdeleted列。我的问题是查询l已经写了永远的运行。如何最好地写下面的查询。
update TBLG2O_REGISTER a set a."isDeleted" = '1'
where a."UserID" not in (select k."UserID" from TBLG2O_USER k)
答案 0 :(得分:1)
答案是特定于数据库引擎。不同数据库引擎的性能特征差别很大,而且您无法指定正在使用的数据库服务器。
然而,子查询经常是MySQL的致命弱点;如果这是MySQL,我不会感到惊讶。如果是这样,以下方法应该具有更好的MySQL性能特征:
update TBLG2O_REGISTER a left join TBLG20_USER k using(UserID)
set a.isDeleted = '1' where k.UserID is null;
答案 1 :(得分:0)
终于开始工作了谢谢你的帮助
Update TBLG2O_REGISTER a set a."isDeleted" = '1' where a."UserID" in (select p."UserID"
from TBLG2O_REGISTER p left join TBLG2O_USER k on p."UserID" =k."UserID"
where k."UserID" is null)