Sql e SELECT语句以及何时执行UPDATE语句?如果从未从SELECT语句返回过记录,则会有标记为TRUE的记录。但是,如果在启动SELECT语句和执行UPDATE语句之间插入,会发生什么情况?当记录从未从SELECT语句返回时,将有标记为TRUE的记录
Sql e SELECT语句以及何时执行UPDATE语句?如果从未从SELECT语句返回过记录,则会有标记为TRUE的记录。但是,如果在启动SELECT语句和执行UPDATE语句之间插入,会发生什么情况?当记录从未从SELECT语句返回时,将有标记为TRUE的记录,sql,sql-server-2008,Sql,Sql Server 2008,e SELECT语句以及何时执行UPDATE语句?如果从未从SELECT语句返回过记录,则会有标记为TRUE的记录。但是,如果在启动SELECT语句和执行UPDATE语句之间插入,会发生什么情况?当记录从未从SELECT语句返回时,将有标记为TRUE的记录。 SELECT * FROM pro_Profile p INNER JOIN pro_Email e ON p.profileID = e.profileID INNER JOIN mod_user
e SELECT语句以及何时执行UPDATE语句?如果从未从SELECT语句返回过记录,则会有标记为TRUE的记录。但是,如果在启动SELECT语句和执行UPDATE语句之间插入,会发生什么情况?当记录从未从SELECT语句返回时,将有标记为TRUE的记录。
SELECT *
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
<!--- Join Job titles to the jobs --->
INNER JOIN mod_employmentAppJobs b 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'
-- Select data into temporary table
declare @result table (jobTitleID int, ...)
INSERT @result
(jobTitleID, ...)
SELECT jobTitleID
FROM pro_Profile p
...
-- Update unreadMail flag
update mod_employmentAppJobs
set unreadMail = 'False'
where jobTitleID in (select jobTitleId from @result)
-- Return result to application
select jobTitleId, ...
from @result
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'
UPDATE mod_employmentAddJobs
SET EmailSent="true"
FROM mod_employmentAppJobs b
INNER JOIN #tmpTable tmp
ON b.jobTitleID=tmp.jobTitleID
SELECT * FROM #tmpTable
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'
UPDATE mod_employmentAppJobs
SET emailSent = 'True'