N行の一意のレコード制限を選択します

価格

以下に示すデータベースレコードがあります。

id  | dataId    | value
1   |    1      |   xxx 
2   |    1      |   xx1
3   |    1      |   xx2
4   |    1      |   xx1
5   |    2      |   yyy
6   |    2      |   yy1
7   |    2      |   yy2 
8   |    1      |   zzz  
9   |    2      |   yy3  

私の望む結果は次のようになります

id  | dataId    | value
8   |    1      |   zzz
4   |    1      |   xx1
3   |    1      |   xx2
9   |    2      |   yy3
7   |    2      |   yy2
6   |    2      |   yy1

dataIdごとにN個の最新IDを選択したい。この場合のNは3

前もって感謝します。

AdamMc331

これは、グループから選択した数のアイテムを取得するために参照できる興味深い記事です。この質問から見つけることができます

各データIDの最新の3つのIDを取得するには、次のクエリを使用できます。

SELECT id, dataid, value, date
FROM myTable m
WHERE(
  SELECT COUNT(*) FROM myTable mt
  WHERE mt.dataid = m.dataid AND mt.id >= m.id
) <= 3;

つまり、where句のサブクエリは最大のid値をフィルタリングし、3以下に制限できWHERE mt.dataid = m.dataidます。これが行のグループ化に使用されいることに注意してください

記事が示唆しているように、これは最も効率的な方法ではありませんが、それを書くためのクリーンな方法です。おそらくより効率的な方法は、各クエリでUNIONを個別に使用することです。詳細については、記事を参照してください。次のようになります。

(SELECT * FROM myTable WHERE dataid = 1 ORDER BY id DESC LIMIT 3)
UNION ALL
(SELECT * FROM myTable WHERE dataid = 2 ORDER BY id DESC LIMIT 3)

これが両方の例のSQLフィドルです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

一意のレコードのみを選択する方法

分類Dev

他の一意の列を持つ特定のレコードの最大値のみを選択しますか?

分類Dev

MySQL-特定の値を含まないすべての一意のレコードを選択します

分類Dev

一意のレコードを選択する

分類Dev

同様の行を持つすべてのレコードが条件を満たす一意の行を選択して合計します

分類Dev

SQLの条件に対して一意のレコードのみを選択します

分類Dev

列の一意の値ごとに上位1つのレコードを選択します

分類Dev

NSDictionary-一意である必要があるキーを選択して一意のレコードを取得します

分類Dev

時間範囲内に最低n個のレコードを表示するすべての一意のエントリを選択します

分類Dev

パンダの各一意のレコードの最後の5行を選択する方法

分類Dev

パンダの各一意のレコードの最初と最後の行を選択する方法

分類Dev

最新の日付の一意のレコードを選択する

分類Dev

SQL Serverの一意の日付に基づいてレコードを選択し、その日付のレコード数をカウントします

分類Dev

mysqlで一意のレコードのみを選択する方法

分類Dev

2つのMongodbコレクションをマージし、一意の値を選択します(pymongo)

分類Dev

週番号を使用して一意のレコードIDのMYSQLPHPを選択する方法

分類Dev

最大タイムスタンプの一意のバーコードを選択します

分類Dev

IDでソートされた一意の行を選択します

分類Dev

MySQLで1つの行として各一意の列値の2つのレコードを選択する方法は?

分類Dev

mysqlから一意のレコードを取得します

分類Dev

Powershellは一意のフィールドを選択します

分類Dev

結合時に一意のフィールドを選択します

分類Dev

前の日付の重複を除いて、特定の日付から一意のレコードを選択します

分類Dev

Djangoは新しいレコードにのみ一意の制約を追加します

分類Dev

IPで並べ替えてから、3つの一意のIPができるまでレコードを選択し続けます

分類Dev

Entity Framework Coreは最初に一意の制約コードを追加します

分類Dev

MYSQLは、1つ以上のレコードで列値がnullではない一意のIDを選択します

分類Dev

MySQL一意の属性値を持つ1つの行を選択します

分類Dev

一意のキーを持つ重複レコードを選択しない

Related 関連記事

  1. 1

    一意のレコードのみを選択する方法

  2. 2

    他の一意の列を持つ特定のレコードの最大値のみを選択しますか?

  3. 3

    MySQL-特定の値を含まないすべての一意のレコードを選択します

  4. 4

    一意のレコードを選択する

  5. 5

    同様の行を持つすべてのレコードが条件を満たす一意の行を選択して合計します

  6. 6

    SQLの条件に対して一意のレコードのみを選択します

  7. 7

    列の一意の値ごとに上位1つのレコードを選択します

  8. 8

    NSDictionary-一意である必要があるキーを選択して一意のレコードを取得します

  9. 9

    時間範囲内に最低n個のレコードを表示するすべての一意のエントリを選択します

  10. 10

    パンダの各一意のレコードの最後の5行を選択する方法

  11. 11

    パンダの各一意のレコードの最初と最後の行を選択する方法

  12. 12

    最新の日付の一意のレコードを選択する

  13. 13

    SQL Serverの一意の日付に基づいてレコードを選択し、その日付のレコード数をカウントします

  14. 14

    mysqlで一意のレコードのみを選択する方法

  15. 15

    2つのMongodbコレクションをマージし、一意の値を選択します(pymongo)

  16. 16

    週番号を使用して一意のレコードIDのMYSQLPHPを選択する方法

  17. 17

    最大タイムスタンプの一意のバーコードを選択します

  18. 18

    IDでソートされた一意の行を選択します

  19. 19

    MySQLで1つの行として各一意の列値の2つのレコードを選択する方法は?

  20. 20

    mysqlから一意のレコードを取得します

  21. 21

    Powershellは一意のフィールドを選択します

  22. 22

    結合時に一意のフィールドを選択します

  23. 23

    前の日付の重複を除いて、特定の日付から一意のレコードを選択します

  24. 24

    Djangoは新しいレコードにのみ一意の制約を追加します

  25. 25

    IPで並べ替えてから、3つの一意のIPができるまでレコードを選択し続けます

  26. 26

    Entity Framework Coreは最初に一意の制約コードを追加します

  27. 27

    MYSQLは、1つ以上のレコードで列値がnullではない一意のIDを選択します

  28. 28

    MySQL一意の属性値を持つ1つの行を選択します

  29. 29

    一意のキーを持つ重複レコードを選択しない

ホットタグ

アーカイブ