TSQL将UNION重写为JOIN

时间:2015-07-16 15:50:36

标签: sql-server tsql join union

我是SQL的新手,我尝试重写此查询,以便它使用联接而不是联合

DECLARE @user VARCHAR(255) = 'jSmith'
DECLARE @dept VARCHAR(255) = 'produce'

SELECT DISTINCT A.*
FROM goals A
INNER JOIN managers B ON B.name = @user
WHERE @user IN (A.userName,A.managerUserName)
AND dept = @dept
AND yr = '2016'
UNION   
SELECT DISTINCT A.*
FROM goals A
INNER JOIN managers C ON C.name = @user
INNER JOIN committedGoals B ON A.goalID = B.goalID
WHERE dept LIKE @dept + '%'
AND yr = '2016' 

1 个答案:

答案 0 :(得分:1)

这不完全相同,因为您已将查询的第二部分限制为包含committedGoals中记录的记录,但如果您总是有记录,那么这可能对您有用:

SELECT g.*
FROM goals g
LEFT JOIN managers m
  ON g.managerUserName=m.name
WHERE dept LIKE @dept + '%'
AND yr='2016'
AND (g.managerUserName=@user OR m.name=@user)