如果相关表上存在具有匹配的itemTable
的行,我正在尝试更新iid
上的列。
itemMeta
是一个NoSQL样式表,该表上每个项目都有重复的iid
,而itemTable
是一个关系表。
update itemTable it
set hasAttributes = (select
case when select count(1) from itemMeta where (im.iid = it.iid)
then 'Y'
else 'N' end)
from itemMeta im
where (im.iid = it.iid)
如果Y
上存在与itemTable
相匹配的行,如何在iid
上将列设置为itemMeta
?
答案 0 :(得分:4)
这将适用于大多数数据库,包括SQL Server:
update itemTable
set hasAttributes = (case when exists (select 1
from itemMeta im
where im.iid = itemTable.iid
)
then 'Y' else 'N'
end);
如果您只想将值更新为'Y'
(如果该值存在)(如果存在则保留现有值),那么我建议:
update itemTable
set hasAttributes = 'Y'
where exists (select 1
from itemMeta im
where im.iid = itemTable.iid
);
这限制了要更新的行,因此应具有更好的性能。
而且,如果您关心性能,则希望在itemMeta(iid)
上建立索引。