[英]Is it possible to do a bulk update?
可以批量更新嗎? 我做了一個構建插入,現在我想更新每個用戶ID以增加計數。
這是我的構建插入的示例
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();
}
您需要使用“ UPDATE ... WITH”
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
試試這個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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.