-2

以下はサンプルデータです。

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は主キーです。基準は、c4 が最も低い特定の unique(c2) に対するものです。行の内容 (5 列すべて) を返したいと考えています。

4

2 に答える 2

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

SQL フィドルのデモ

更新: 1 SQL では、返される結果はセットセット (句を指定しない限りORDER BY、この場合はカーソル) であり、順序は保証されません。これは標準です。特定の順序を保証する場合は、ORDER BY 句を使用する必要があります。あなたの場合、結果は のように並べられるとは限りません1 5 9。代わりに追加ORDER BY c1します。

たとえば、上位 3 行または最大行を取得する場合など、場合によってはORDER BY句が重要になることがあります。この場合、ORDER BY句を指定する必要があります。

したがって、特定の順序を保持したい場合は、ORDER BY.


1 @Fahim Parker が指摘したように、以下のコメントを参照してください。

于 2012-11-10T09:02:39.340 に答える
0
select c1,c2,c3,c4,c5
from table
where c4= (select min(c4) from table as f where f.c4 = table.c4);

それが役立つことを願っています

于 2012-11-10T09:03:00.350 に答える