2009-06-29 18 views
0

Ist eine Bulk-Aktualisierung möglich? Ich habe eine Build-Einfügung gemacht, jetzt möchte ich jede der Benutzer-IDs aktualisieren, um die Anzahl zu erhöhen.Ist es möglich, ein Bulk-Update durchzuführen?

Hier ist eine Probe meiner Build

void updateMediaForSubscribers(long userId, long mediaId, Media_Base.Catagory cat, DateTime currentDate) 
{ 
    command.CommandText = 
     "INSERT INTO user_media_subscription (recipientId, mediaId, catagory) " + 
     "SELECT watcher, @mediaId, @category " + 
     "FROM user_watch WHERE [email protected];"; 
    command.Parameters.Add("@mediaId", DbType.Int64).Value = mediaId; 
    command.Parameters.Add("@category", DbType.Int64).Value = cat; 
    command.Parameters.Add("@watched", DbType.Int64).Value = userId; 
    command.ExecuteNonQuery(); 

    //now I want to increase but this syntax is wrong 
    //currently near "LEFT": syntax error 
    //this is made up and shouldn't work. 
    command.CommandText = 
     "UPDATE user_data SET mediaMsgCount=mediaMsgCount+1 " + 
     "LEFT JOIN user_watch AS w ON w.watcher=user_data.userId " + 
     "WHERE [email protected];"; 
    command.Parameters.Add("@watched", DbType.Int64).Value = userId; 
    command.ExecuteNonQuery(); 
} 

Antwort

1

Sie verwenden müssen einfügen "UPDATE ... MIT"

UPDATE ud SET ud.mediaMsgCount = ud.mediaMsgCount + 1 
FROM user_data ud LEFT JOIN user_watch uw ON uw.watcher = ud.userId 
WHERE uw.watched = @watched 

Werfen Sie einen Blick auf http://www.bennadel.com/blog/938-Using-A-SQL-JOIN-In-A-SQL-UPDATE-Statement-Thanks-John-Eric-.htm

+0

in der Nähe von "VON": synt ax Fehler :( –

+0

Hmm, ich habe es optimiert, aber ich habe nicht SQL Server lokal zu testen - Download es jetzt, so dass ich in der Lage sein wird, um sicherzustellen, dass es funktioniert in ein bisschen :-) – Justin

+0

Ich denke, das Problem mit Dieser Code besagt, dass Sie in der UPDATE-Klausel keinen Alias ​​verwenden können. – jn29098

1

diese SQL-Versuchen:

UPDATE user_data 
    SET mediaMsgCount = mediaMsgCount+1 
    FROM user_data 
    LEFT JOIN user_watch AS w ON w.watcher=user_data.userId 
WHERE [email protected] 
Verwandte Themen