Sql 如何更新只显示一次的列中的值?

Sql 如何更新只显示一次的列中的值?,sql,sqlite,Sql,Sqlite,如何仅更新在“项目”列中仅出现一次的项目的id值 表1 id | item | price ------------- 10 | pen | 10 20 | pen | 10 30 | pen | 10 30 | copy | 10 10 | book | 10 10 | ball | 10 试试这个 Update Table1 set id = "val" group by item having count(*) = 0 您可以使用“不存在”: 分组,然后拥有。但我只需

如何仅更新在“项目”列中仅出现一次的项目的id值

表1

id | item | price
-------------
10 | pen  | 10  
20 | pen  | 10   
30 | pen  | 10
30 | copy | 10
10 | book | 10
10 | ball | 10
试试这个

Update Table1 set id = "val" 
group by item
having count(*) = 0
您可以使用“不存在”:


分组,然后拥有。但我只需要更新在项目列中只显示一次的id。。。所以,只有那些与项目ball、book、copy和pen相对应的ID才应该被忽略。对不起,我不知道这个问题是针对sqllite的,它适用于sql Server。这是有效的,但如果我只想更新项目ID 10,并遵守在只出现一次的项目之前所说的规则?我想我必须使用id=10的位置,但我无法让它一起工作。。。WHERE和GROUP BYThis不是有效的SQL;更新不包含表引用。
update t 
set t.id = <whatever>
where not exists (select 1 from table where item = t.item and id <> t.id);
update table set 
id = <whatever>
where
item in (select item from table group by item having count(*)=1)