У вас есть несколько вариантов выбора.
1) Используйте временную таблицу и сначала выберите там данные, обновите mod_employmentAppJobs и выполните выбор из временной таблицы, чтобы получить ваши данные.
Итак, это будет выглядеть примерно так:
создать временную таблицу
CREATE TABLE #tmpTABLE
(
EmailAddress varchar(100),
JobTitle varchar(50),
JobTitleId bigint
......
)
Вставить в нее
INSERT INTO #tmpTable
SELECT EmailAddress,JobTitle, ........
FROM pro_Profile p
INNER JOIN pro_Email e
ON p.profileID = e.profileID
INNER JOIN mod_userStatus m
ON p.profileID = m.profileID
<!--- Joins the pro staff profiles to the employment app --->
INNER JOIN mod_employmentAppJobTitles a
ON p.profileID = a.departmentID
INNER JOIN mod_employmentAppJobs b
<!--- Join Job titles to the jobs --->
ON a.jobTitleID=b.jobTitleID
<!--- Joining the table on where the profile equals everything else --->
INNER JOIN mod_employmentAppProfile c
ON c.eAppID = b.eAppID
WHERE b.emailSent = 'False'
Обновить исходную таблицу (я бырекомендовать индекс для jobTitleId во временной таблице для производительности, если применимо)
UPDATE mod_employmentAddJobs
SET EmailSent="true"
FROM mod_employmentAppJobs b
INNER JOIN #tmpTable tmp
ON b.jobTitleID=tmp.jobTitleID
Получить фактические данные обратно на уровень приложения
SELECT * FROM #tmpTable
Для лучшего вкуса, я рекомендую обсыпка с помощью BEGIN TRAN ... COMMIT ... ROLLBACK и BEGIN TRY..END TRY BEGIN CATCH ... END CATCH по вкусу и требованиям бизнеса.
Кроме того, это хороший способ броситьвременная таблица после того, как вы закончили с ней, даже если SQL-сервер не будет обижаться, если вы этого не сделаете.
2) Вы можете использовать предложение OUTPUT оператора обновления.
UPDATE mod_employmentAddJobs
SET EmailSent="true"
FROM pro_Profile p
INNER JOIN pro_Email e
ON p.profileID = e.profileID
INNER JOIN mod_userStatus m
ON p.profileID = m.profileID
<!--- Joins the pro staff profiles to the employment app --->
INNER JOIN mod_employmentAppJobTitles a
ON p.profileID = a.departmentID
INNER JOIN mod_employmentAppJobs b
<!--- Join Job titles to the jobs --->
ON a.jobTitleID=b.jobTitleID
<!--- Joining the table on where the profile equals everything else --->
INNER JOIN mod_employmentAppProfile c
ON c.eAppID = b.eAppID
WHERE b.emailSent = 'False'
ВЫВОД вставлен. *
Это должно дать вам набор результатовобратно на уровень приложения