我有一个包含UserId
,Email
和Mobile
列的表格。 Email
没有空值,但mobile
的空值分散在表格的不同行中。
我想用唯一mobile
更新每个空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。我还注意到WebMatrix完全支持TOP
关键字,但VS 2010 SP1拒绝SQL Server CE 4上的TOP
关键字支持。具体怎么回事?当在webmatrix中运行时,所有具有null mobile的记录都会被更新而忽略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))
有人,请救我。
答案 0 :(得分:0)
P !! ......我经过几次合理的潜水后终于得到了它。
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关键字后才更新?