1

UserIdEmailおよびの列を持つテーブルがありますMobileEmailnull 値はありませんがmobile、テーブル内のさまざまな行に null が散らばっています。

mobile各 null の最初の行を uniqueで更新したい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)))

私の目的は、ユーザーがテーブルに不要な null を持たないようにすることです。私が観察した問題の 1 つは、SQL Server Compact Editionがキーワードをサポートしていないことです。TOPどうすればそれに取り組むことができますか?

SQL Server CE のバージョンは 4.0 です。TOPまた、WebMatrix ではキーワードが完全にサポートされていますが、VS 2010 SP1 ではTOPSQL Server CE 4 でのキーワードのサポートが拒否されていることにも気付きました。webmatrix で実行すると、モバイルが null のすべてのレコードが 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基準を使用している場合でも、サブクエリから1つの行が返されるようにするには、主キー列をピボットとして使用する必要がありました。しかし、VS2010 sqlCE 4.0がTOPキーワードをサポートしていないのに、webmatrixがサポートしている理由については、まだ興味があります。また、他のクエリでTOPキーワードを使用した後でも、すべての列が更新された理由は何ですか。

于 2012-05-26T12:26:00.033 に答える