1

以下是我的表,我想选择具有唯一 id1 和最小差异的记录,我已经尝试过:

select * from table group by (id1) having min(difference)

但这仅返回一条记录

| ID1 | ID2 | DIFFERENCE |
|-----|-----|------------|
|   1 |   1 |          1 |
|   1 |   2 |          3 |
|   1 |   3 |          4 |
|   2 |   1 |          3 |
|   2 |   3 |          4 |

现在我想选择差异最小的记录,即我想要表中的第一行和第四行,因为两者都有最小差异和不同的 id1。

4

1 回答 1

0

尝试使用这样的子查询:

SELECT DISTINCT t1.* FROM Table1 t1
JOIN
(
    SELECT ID1, MIN(difference) AS MinDif
    FROM Table1
    GROUP BY ID1
) t2
ON t1.ID1 = t2.ID1
AND t1.difference = t2.MinDif;

如果您只想选择ID1Difference列,那么即使不使用子查询也可以这样做:

SELECT ID1, MIN(difference) AS MinDif
FROM Table1
GROUP BY ID1

看到这个 SQLFiddle

于 2013-09-20T07:43:05.943 回答