怎样写sql语句 同一表根据某字段相同就更新

我有一张表A如下所示
ID NAME NAME_ID FLAG
1 SCHOOL 001 1
2 SCHOOL 002 0
3 COMPANY 004 1
……
已知一个name对应一个name_id,以标记flag为1的为准,怎样根据name相同将name_id更新过来,如第二行,由于flag=0,需要将他的name_id更新为第一行的name_id即001,这样的语句该如何写?

第1个回答  2014-10-29
update table
set name_id = (select distinct name_id from table t where t.name = table.name and t.name = 1)
where flag = 0

--当flag等于0的时候更新
--更新的值为:与当前name相同的,并且flag等于1的name_id追问

我照你说的,报这个错:ORA-01427: single-row subquery returns more than one row 还有什么方法吗?谢谢!

追答

应该是返回多个值啦吧,你是不是有多个等于1的并且name_id不等的,这样的话肯定有错误,而且我也没办法,除非你能给我更多的筛选条件

本回答被提问者和网友采纳

怎样写sql语句 同一表根据某字段相同就更新
where flag = 0 --当flag等于0的时候更新 --更新的值为:与当前name相同的,并且flag等于1的name_id

SQL 同时更新一张表里的一个字段所有数据怎么操作?
按如下语句就行了:update [表名] set [字段名] = [值];如果是根据一个表更新此表,套用如下方式:update [表名] set [字段名] = (select [字段名] from [其他表] where [两表间的关联条件])。一、简单介绍 1.SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种...

求sql语句!在同一表中,如何根据一列包含的内容,替换另一列的数据?_百...
数据量大时,则用模糊匹配 update 表名 set 县域名称=地址 where 县域名 like '%市'

如何在SQL中使用UPDATE语句根据条件修改表中特定字段的值?
在SQL语法中,update语句用于直接修改数据库表中的数据。这个关键字用于指示要执行的数据更新操作。具体来说,update后面紧跟着的是表名,如:table_name,这是你想要更新数据的表的标识。接着是关键字set,它后面跟着需要更新的列名和新的值,例如:column1='xxx',这意味着你想要将column1列的值设置...

SQL语句实现,表1和表2字段名相同,如何将表2中存在但表1中表1中
当在SQL语句中遇到表1和表2具有相同字段名的情况,且需要将表2中的特定数据更新到表1时,关键在于找到两个表之间的“关键字段”,这个字段必须在两个表中都有且唯一,比如身份证号或自定义的无重复标识符。例如,假设表2有“身份证号”和“年工资总额”两个字段,而表1只有“身份证号”和“家庭...

如何update同一张表中具有相同字段的记录
CREATE TRIGGER SameWords ON 表X FOR INSERT AS begin if (select count(*) from X where A=inserted.A and B=inserted.B)>1 begin Update X set C='有重复' where A=inserted.A and B=inserted.B end end 更新也要一个,样子一样,自己写写试试。

更新数据库所有表中同一字段值,SQL语句怎么写
1、建立一个id对照表,tmp(id,newid),并将对照的数据生成好。2、通过tmp表关连来update A B C D E F G H I J这些表中的id 比如 A表 update A set id = b.newid from tmp b where A.id =b.id 这样操作方便,并且是可逆的。

sql中两个表根据根据相同的字段进行更新
首先假定的你的表名为“DATA”,你的字段名为“MESSAGE”。 使用以下语句: update DATA set MESSAGE=replace(MESSAGE,'AAAA','BBBB) 这样就会将DATA库中的MESSAGE字段中所有AAAA换成BBBB了。

SQL中,把表1 中与某项重名的元组更新成原来的名字+ID(同一元组)的语句...
update 表名 set 字段1 =rtrim(字段1) + rtrim(ID) where 字段1=字段2

sql查询同一字段下相同记录并更改记录值问题
select 成绩,avg(积分1) 积分 from view_1 group by 成绩;3、检索视图view_2根据成绩信息更新表CC1中的积分信息 update CC1 as a set a.JF=b.积分 where exists (select b.积分 from view_1 as b where b.成绩=a.CJ);执行完上面三个步骤你的要求达到。※说明,我没有试验我写的sql语法...

相似回答