如果行存在于另一个 Table (SQL),如何更新
How to Update if a Row Exists on Another Table (SQL)
如果相关 table.
上存在具有匹配 iid
的行,我正在尝试更新 itemTable
上的列
itemMeta
是一种 NoSQL 风格 table,table 上的每个项目都有重复的 iid
,而 itemTable
是关系型 table.
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)
如果 itemMeta
上存在具有匹配 iid
的行,我如何将 itemTable
上的列设置为 Y
?
这适用于大多数数据库,包括 SQL 服务器:
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)
上的索引。
如果相关 table.
上存在具有匹配iid
的行,我正在尝试更新 itemTable
上的列
itemMeta
是一种 NoSQL 风格 table,table 上的每个项目都有重复的 iid
,而 itemTable
是关系型 table.
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)
如果 itemMeta
上存在具有匹配 iid
的行,我如何将 itemTable
上的列设置为 Y
?
这适用于大多数数据库,包括 SQL 服务器:
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)
上的索引。