回答

收藏

从没有唯一标识的重复记录中获取最高的第一条记录

技术问答 技术问答 251 人阅读 | 0 人回复 | 2023-09-14

我需要从下面给出的表中获取每个重复记录集的第一行。我需要在视图中使用此查询1 E7 i, g4 n) R$ P9 l
请不要使用临时表,因为我已经通过添加标识列和最小函数以及分组依据来完成了。我需要没有临时表或表变量的解决方案
) M" m! w, d, v. f* a: g! \这只是示例数据。原始表中有1000条记录,我只需要前1000条的结果,因此不能使用 不同的
/ }, W$ P7 r& r- f& [, W9 X我正在使用SQL Server 2005
& U0 n3 {+ a3 L, ]+ v6 y% E! _: m: b" s

" W8 e" B! m4 ^- f3 M) L( @8 u
  k/ l% Q# B2 \3 s( g  e0 f谢谢。9 w* d( v8 v5 `# y$ L0 L& Y( d
               
* R0 J9 M0 s* z解决方案:. c0 P' N8 k( y
               
- H$ ]) p. t  E( A
; H: z$ ?! u( ^& g1 D1 Z. S2 x  }: }* }" s0 F$ R) V
                答案具体取决于您所说的“前1000个不同”记录的含义。4 N# A9 ?* X8 g  K
如果您要返回最多1000条不同的记录,而不管表中有多少重复记录,请编写以下代码:# u8 D, H7 H& U1 U, X
SELECT DISTINCT TOP 1000 id, uname, tel
4 _! `& p7 U4 G; _0 wFROM Users+ T2 U- V$ f. \8 C6 S
ORDER BY / ]; e" f# j, R% p* l3 x9 l
如果只想 搜索表中 的前1000行,并且可能返回的行数少于1000,那么可以使用子查询或CTE编写它,如下所示:  q8 V1 h+ p+ \, A% y2 r
SELECT DISTINCT *  N& K: F( h4 R6 G- J
FROM5 B+ j# m. E7 T* ~( `1 T; Y/ [
(
% G* a6 y6 V$ _) ]    SELECT TOP 1000 id, uname, tel+ f4 f2 G6 A+ T8 T
    FROM Users
* x  w4 n- n+ p9 x+ g( _    ORDER BY
" n, c! N1 v" W, ]5 K8 Y9 D) u7 j9 s! L. E4 Y+ W) L2 @
的ORDER BY当然是可选的,如果你不关心你返回的记录。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则