如果行存在于另一个表中,如何更新 (SQL)
Posted
技术标签:
【中文标题】如果行存在于另一个表中,如何更新 (SQL)【英文标题】:How to Update if a Row Exists on Another Table (SQL) 【发布时间】:2019-05-28 15:16:55 【问题描述】:如果相关表中存在与 iid
匹配的行,我正在尝试更新 itemTable
上的列。
itemMeta
是 NoSQL 样式表,表上每个项目都有重复的 iid
s,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)
如果itemMeta
上存在与iid
匹配的行,如何将itemTable
上的列设置为Y
?
【问题讨论】:
用您正在使用的数据库标记您的问题。您的查询有什么问题?您想将值更新为什么? 使用 SQL Server 标记更新。 【参考方案1】:这适用于大多数数据库,包括 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)
上建立索引。
【讨论】:
太棒了。谢谢!!以上是关于如果行存在于另一个表中,如何更新 (SQL)的主要内容,如果未能解决你的问题,请参考以下文章
sql 示例:如果行存在,则如何更新行或如果行不存在则插入行