1

我有一个带有列的表UserIdEmailMobileEmail没有空值,但mobile空值分散在表的不同行中。

我想mobile用 unique更新每个 null 的第一行mobile。我希望这会奏效,但不确定。

UPDATE       userprofileplus
SET                mobile = 9199225533
WHERE        (UserId IN
                             (SELECT        TOP (1) UserId
                               FROM            userprofileplus AS userprofileplus_1
                               WHERE        (mobile IS NULL) AND (UserId = 5)))

我的目的是防止用户在表上出现不必要的空值。我观察到的一个问题是 SQL Server Compact Edition不支持TOP关键字。我该如何解决?

SQL Server CE 版本是 4.0。我还注意到TOPWebMatrix 完全支持关键字,但 VS 2010 SP1 拒绝TOPSQL Server CE 4 上的关键字支持。这是怎么回事?在 webmatrix 中运行时,所有移动为空的记录都会更新,忽略 TOP 标准。我只需要更新第一个返回的行而不是全部。我也试过这个。相同的结果

UPDATE       userprofileplus
SET                mobile = 9199225533
WHERE        (UserId IN
                             (SELECT        UserId
                               FROM            userprofileplus AS userprofileplus_1
                               WHERE        (mobile IS NULL) AND (UserId = 5) order by userid offset 1 rows))

有人,请保释我。

4

1 回答 1

1

呼!!!.......经过几次合乎逻辑的潜水后,我终于得到了它。

UPDATE       userprofileplus
SET                mobile = 9199225533
WHERE        (mobile is null and userid = 5) and (Id IN
                             (SELECT        TOP (1) Id
                               FROM            userprofileplus AS userprofileplus_1
                               WHERE        (mobile IS NULL) AND (UserId = 5)))

即使我使用的是 TOP 条件,我也必须使用我的主键列作为枢轴,以确保从子查询返回单行。但我仍然很好奇为什么 VS2010 sqlCE 4.0 不支持 TOP 关键字,但 webmatrix 支持。另外,为什么在其他查询中使用 TOP 关键字后所有列都更新了?

于 2012-05-26T12:26:00.033 回答