Sql 根据非唯一列选择记录
我的表格如下所示: 我希望能够根据Sql 根据非唯一列选择记录,sql,database,postgresql,Sql,Database,Postgresql,我的表格如下所示: 我希望能够根据auditidentity列选择大量记录 我尝试使用LIMIT,但这只限制了返回的行数,但每个审核可以有一个不确定的行数 我尝试使用DESTINCT,但这只从每条记录返回一行 总之, 行数!=审计次数 我如何选择其中的一些 编辑:为清晰起见,每个彩色轮廓都被视为“审核” 您可以这样做: SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY auditi
auditidentity
列选择大量记录
我尝试使用LIMIT
,但这只限制了返回的行数,但每个审核可以有一个不确定的行数
我尝试使用DESTINCT
,但这只从每条记录返回一行
总之,
行数!=审计次数
我如何选择其中的一些
编辑:为清晰起见,每个彩色轮廓都被视为“审核”
您可以这样做:
SELECT
*
FROM
(
SELECT
ROW_NUMBER() OVER(PARTITION BY auditidentity ORDER BY auditidentity) AS itemNumber,
DENSE_RANK() OVER(ORDER BY auditidentity) AS auditNbr,
tbl.*
FROM @tbl AS tbl
) AS tbl2
WHERE
tbl2.itemNumber<=100
AND tbl2.auditNbr<=2
选择
*
从…起
(
选择
作为itemNumber的行(按AuditEntity顺序按AuditEntity划分),
(按审核顺序)作为审核编号,
待定*
从@tbl作为tbl
)作为tbl2
哪里
tbl2.itemNumber谢谢大家的帮助,我的一位同事找到了答案:
SELECT * FROM smp_audit_detail WHERE auditidentity IN
(SELECT DISTINCT auditidentity FROM smp_audit_detail LIMIT 100)
您的输出应该是什么?显示您的示例输出这里大约有70000行,但只有1335行是唯一的“auditidentity”。我想把我的输出限制在。。100个。@Geditdk限制100个怎么样?这样你就不想用相同的听力重复行了??或者什么???@dude:我对PostgreSQL不是很熟悉。但它应该起作用。使用顶部
进行测试mssql@Arion感谢您的回复,不幸的是,这只返回每个审核的第一行。返回的审核数是正确的,但我还需要额外的行。将tbl.rowNbr=1更改为tbl.rowNbr。聪明的东西,我知道这是在做什么,但它返回了7000多行。tbl。rowNbr@Geditdk:我更新了答案。通过该查询,您可以控制获得的项目数量以及可能获得的审核数量