Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据非唯一列选择记录_Sql_Database_Postgresql - Fatal编程技术网

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:我更新了答案。通过该查询,您可以控制获得的项目数量以及可能获得的审核数量