Можно ли сделать массовое обновление? - PullRequest
0 голосов
/ 30 июня 2009

Возможно ли массовое обновление? Я сделал вставку сборки, теперь я хотел бы обновить каждый из идентификаторов пользователей, чтобы увеличить количество.

Вот пример моей сборки

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 watched=@watched;";
    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 w.watched=@watched;";
    command.Parameters.Add("@watched", DbType.Int64).Value = userId;
    command.ExecuteNonQuery();
}

Ответы [ 2 ]

1 голос
/ 30 июня 2009

Попробуйте этот SQL:

UPDATE user_data 
   SET mediaMsgCount = mediaMsgCount+1 
  FROM user_data 
  LEFT JOIN user_watch AS w ON w.watcher=user_data.userId 
 WHERE w.watched=@watched
1 голос
/ 30 июня 2009

Вам нужно использовать «ОБНОВЛЕНИЕ ... С»

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

Взгляните на http://www.bennadel.com/blog/938-Using-A-SQL-JOIN-In-A-SQL-UPDATE-Statement-Thanks-John-Eric-.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...