以下是样本数据:
c1 c2 c3 c4 c5
1 a1 a 1 1
2 a2 a 2 1
3 a3 a 3 1
4 a4 a 4 1
5 b1 b 1 1
6 b2 b 2 1
7 b3 b 3 1
8 b4 b 4 1
9 a1 c 3 1
我想了解以下详细信息:
c1 c2 c3 c4 c5
1 a1 a 1 1
5 b1 b 1 1
9 a1 c 3 1
C1
是主键,标准是任何给定的唯一(c2),其中c4是最低的,我想返回行的内容(所有5列)。
答案 0 :(得分:2)
试试这个:
SELECT t1.*
FROM Table1 t1
INNER JOIN
(
SELECT c3, MIN(c4) c4
FROM Table1
GROUP BY c3
) t2 ON t1.c3 = t2.c3 ANd t1.c4 = t2.c4
更新: 1 在SQL中,返回的结果是set集(除非您指定ORDER BY
子句,否则它是一个游标这种情况),其中订单不保证。这是一个标准。如果要保证特定订单,则应使用ORDER BY子句。在您的情况下,不保证像1 5 9
那样订购结果。请改为添加ORDER BY c1
。
ORDER BY
子句在某些情况下可能至关重要,例如,如果想要获得前三行或最大行,在这种情况下,您必须指定ORDER BY
子句。
因此,如果您想要保留特定订单,则必须指定ORDER BY
。
1 正如@Fahim Parker所述,请参阅以下评论。
答案 1 :(得分:0)
select c1,c2,c3,c4,c5
from table
where c4= (select min(c4) from table as f where f.c4 = table.c4);
我希望有帮助