【发布时间】:2017-04-29 18:07:55
【问题描述】:
我正在尝试编写查询。我只想返回一行,但我的查询返回了多个重复的行。
我的查询如下
SELECT
LOWER(M.UserID) AS EmpID,
ISNULL(M.DispName, '') AS UserName,
ISNULL(C.CompCode, '') AS CompCode,
ISNULL(D.DispName, '') AS DeptName,
ISNULL(D.DispName, '') AS DispName,
ISNULL(R.RankCode, '') AS RankCode,
M.SortOrder AS UserOrder,
R.SortOrder AS RankOrder,
ISNULL(J.JobCode, '') AS JobCode
FROM
tb_User M WITH(NOLOCK)
INNER JOIN
tb_Dept D WITH(NOLOCK) ON M.MainDeptCode = D.DeptCode
INNER JOIN
tb_Company C WITH(NOLOCK) ON M.CompCode = C.CompCode
INNER JOIN
tb_Rank R WITH(NOLOCK) ON M.RankCode = R.RankCode
INNER JOIN
tb_Duty DT WITH (NOLOCK) ON M.DutyCode = DT.DutyCode
LEFT OUTER JOIN
tb_Job J WITH (NOLOCK) ON M.JobCode = J.JobCode
WHERE
MainDeptCode = '1000' AND M.DisplayYN = 'Y'
ORDER BY
RankOrder, JobCode, DispName
结果如下:
EmpID UserName CompCode DeptName DispName RankCode UserOrder RankOrder JobCode
0001 ryden 1000 ceo ceo 1 0 0
0001 ryden 1000 ceo ceo 1 0 0
0001 ryden 1000 ceo ceo 1 0 0
0001 ryden 1000 ceo ceo 1 0 0
0001 ryden 1000 ceo ceo 1 0 0
0001 ryden 1000 ceo ceo 1 0 0
0001 ryden 1000 ceo ceo 1 0 0
0001 ryden 1000 ceo ceo 1 0 0
如何解决该查询?请帮帮我。
【问题讨论】:
-
在不知道表的架构和内容的情况下无法帮助您。
-
结果可能仅与您实际选择的列重复。
-
您的
JOINs 之一将是一对多关系。换句话说,JOIN谓词将是非唯一的 -
设置Bad Habits to kick - putting NOLOCK everywhere - 不推荐在任何地方使用它 - 恰恰相反!
-
M.JobCode 的值是多少?显示选择中的值。
标签: sql-server tsql duplicates