0

2つのテーブル値パラメーターを「内部結合」しようとしていますが、クエリを実行すると永遠にかかり、ms sql server managementstudio2008でデバッグを停止する必要があります。

クエリ:

    @allClients [dbo].[ImportedClients] READONLY,
    @NewClients [dbo].[ImportedClients] READONLY

--Update Clients table in db with new clients

    UPDATE [dbo].[Clients]
        SET 

            Email = ISNULL(ct.Email, x.Email), 
            FirstName = ISNULL(ct.FirstName, x.FirstName), 
            LastName = ISNULL(ct.LastName, x.LastName), 
            Telephone = ISNULL(ct.Telephone, x.Telephone), 
            Cellphone = ISNULL(ct.Cellphone, x.Cellphone), 



        FROM @NewClients ct
        inner join @allClients x 
        ON (x.Email = ct.Email)     

        WHERE ct.Status > -1 

私がやろうとしているのは、@ NewClientsと@allClientsの両方に存在する行のすべてのクライアント情報を更新して、内部結合を使用したことです。2つのテーブル値パラメーターを結合することは可能ですか?このクエリは、数行でも機能しません(クエリはエラーなしで完了しません)。

助言がありますか?

4

1 に答える 1

1

[dbo].[Clients]SQLのFROM句で参照する必要があります。

このようなもの:

@allClients [dbo].[ImportedClients] READONLY,
@NewClients [dbo].[ImportedClients] READONLY

--Update Clients table in db with new clients

UPDATE [dbo].[Clients]
SET 
    Email = ISNULL(ct.Email, x.Email), 
    FirstName = ISNULL(ct.FirstName, x.FirstName), 
    LastName = ISNULL(ct.LastName, x.LastName), 
    Telephone = ISNULL(ct.Telephone, x.Telephone), 
    Cellphone = ISNULL(ct.Cellphone, x.Cellphone), 

FROM [dbo].[Clients] c
    INNER JOIN @NewClients ct ON (c.Email = ct.Email)     
    INNER JOIN @allClients x  ON (x.Email = ct.Email)     
WHERE ct.Status > -1 
于 2012-11-06T15:00:57.653 に答える