【发布时间】:2017-08-29 17:57:31
【问题描述】:
我在下面有一个查找表:
id ref order
1 6 0
2 6 0
3 7 0
5 34 0
6 33 0
6 255 1
9 12 0
9 80 1
12 7 0
12 76 1
13 10 0
15 12 0
16 6 0
16 7 1
17 6 1
17 63 0
18 7 0
19 7 1
19 75 0
20 6 0
20 63 1
所以在查找表(tab_lkp)中,它有列[id](实体的ID),[ref](指向另一个表中其他实体的引用id)和[order](告诉顺序)参考,较小的顺序意味着较高的优先级)。
我的期望是,对于每个 ID,只选择一个顺序最小的 ref。我的代码是(通过关注Phil's answer):
select id
, ref
, min_order = min(order)
from [dbo].[tab_lkp]
group by id, ref
order by id, ref
但是代码对我不起作用,结果仍然包含每个 ID 的多条记录:
id ref order
1 6 0
2 6 0
3 7 0
5 34 0
6 33 0
6 255 1
9 12 0
9 80 1
12 7 0
12 76 1
13 10 0
15 12 0
16 6 0
16 7 1
17 6 1
17 63 0
18 7 0
19 7 1
19 75 0
20 6 0
20 63 1
您能告诉我我的代码有什么问题吗?我应该如何实现我的目标?
【问题讨论】:
-
标记 DBMS 以获得更好的响应
-
另外,按
ref分组,所以如果一个id有多个reffalues,它会全部返回。请显示预期输出
标签: sql database select group-by