diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index 616e08e4d8..0e6c7ad2bd 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -2654,6 +2654,13 @@ func UpdateIssueStatus(ctx *context.Context) {
 		return
 	}
 	for _, issue := range issues {
+		if err := issue.LoadPullRequest(ctx); err != nil {
+			ctx.ServerError("LoadPullRequests", err)
+			return
+		}
+		if issue.IsPull && issue.PullRequest.HasMerged {
+			continue
+		}
 		if issue.IsClosed != isClosed {
 			if err := issue_service.ChangeStatus(issue, ctx.Doer, "", isClosed); err != nil {
 				if issues_model.IsErrDependenciesLeft(err) {