1

他の例を見た後も解決策を見つけることができませんでした。そのため、助けを求めています。

私のテーブル構造:

 V_id | name | group_id | other columns
 ----------------------
   1  |      |    1     
   2  |      |    1     
   3  |      |    2     
   4  |      |    3     
   5  |      |    3

group_id 列から最大値を持つすべての行を選択するために、クエリを作成するのに苦労しています。

したがって、出力は次のようになります。

V_id | name | group_id | other columns
----------------------
  4  |      |    3     
  5  |      |    3     

group_id が最も高いすべてのレコードを選択することで解決できると思います。


また、残りのすべての行を取得するためのクエリも必要です。
この場合、次のようになります。

V_id | name | group_id | other columns
----------------------
  1  |      |    1     
  2  |      |    1     
  3  |      |    2 

group_id < Max(group_id) のすべてのレコードを選択することで実行できると思います

4

2 に答える 2

1

問題の最初の部分では、

SELECT  *
FROM    tableName
WHERE   group_id = (SELECT MAX(group_ID) FROM TableName)

第二部では、

SELECT  *
FROM    tableName
WHERE   group_id < (SELECT MAX(group_ID) FROM TableName)
于 2013-04-29T10:55:01.657 に答える
1

そのために使用できますJOIN

SELECT a.* 
  FROM Table1 a
  JOIN (SELECT MAX(Group_ID) AS MAXID 
          FROM Table1) B
    ON a.Group_id = B.MaxID;

結果:

| V_ID |   NAME | GROUP_ID |
----------------------------
|    4 | (null) |        3 |
|    5 | (null) |        3 |

残りの行については、LEFT JOIN次のような条件で使用します。

   SELECT a.* 
     FROM Table1 a
LEFT JOIN (SELECT MAX(Group_ID) AS MAXID 
             FROM Table1) B
       ON a.Group_id = B.MaxID
    WHERE B.MaxID IS NULL;

結果:

| V_ID |   NAME | GROUP_ID |
----------------------------
|    1 | (null) |        1 |
|    2 | (null) |        1 |
|    3 | (null) |        2 |

このSQLFiddleを参照してください

于 2013-04-29T11:06:40.843 に答える