我是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'
答案 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)