更新一组行的唯一实例

时间:2013-04-29 19:30:50

标签: sql sqlite

我有一个带有UID字段的表,一个“in study”字段(将采用0或1)和一个文本字段。文本字段中有许多重复项。到目前为止,我已经想出了一种只选择文本字段的第一个实例的方法:

select "text.original", min(UID) from tblHashtags group by "text.original" order by min(UID);

然而,我真正想要的是一个单线程,它将更新上面返回的所有记录中的“in study”字段。然后,能够将此选择反转为更新所有内容将非常好其他记录也为0。我可能遗漏了一些简单的东西,但遗憾的是我不经常使用SQL。

编辑添加:我已经对此进行了更多的工作,我将非常感谢能够帮助您做到这一点,从不吝啬这一行。到目前为止我能做的最好的事情是:

update tblHashtags set "instudy"=1 where (select "text.original", min(UID) from tblHashtags group by "text.original" order by min(UID));
Error: only a single result allowed for a SELECT that is part of an expression

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

删除text.original列,这将导致返回单列结果集。您可以在IN子句中使用单列结果集。

UPDATE tblHashtags SET "instudy" = 1 WHERE UID IN (
    SELECT UID FROM tblHashtags GROUP BY "text.original" ORDER BY min(UID)
);