根据非唯一列选择记录

时间:2014-08-07 10:36:00

标签: sql database postgresql

我的表格如下:

The "smp_audit_detail" table.

我希望能够根据auditidentity列选择多个记录。

我尝试使用LIMIT,但这只限制了返回的行数,但每次审核都可能有不确定的行数。

我尝试使用DESTINCT,但这只返回了每条记录中的一行。

简而言之,

  

行数!=审核次数

如何选择其中一些?

编辑:为清楚起见,每个彩色轮廓都被视为"审核"。

Audits outlined

2 个答案:

答案 0 :(得分:0)

你可以这样做:

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

答案 1 :(得分:0)

感谢大家的帮助,我的一位同事找到了答案:

SELECT * FROM smp_audit_detail WHERE auditidentity IN   
(SELECT DISTINCT auditidentity  FROM smp_audit_detail LIMIT 100)