-3

ID、Date、Total の 3 つのフィールドがあります。あなたのテーブルには有効なデータである同じ日の複数の行が含まれていますが、レポート目的では、1 日あたり 1 行のみを表示する必要があります。1 日あたりの ID が最大の行を返し、残りはユーザーから非表示にする必要があります (返されません)。以下の質問をよりよく理解するために、サンプル データとサンプル出力を示します。

ID, Date, Total
1, 2011-12-22, 50
2, 2011-12-22, 150

正しい結果は次のとおりです。

2, 2012-12-22, 150

正しい出力は 2011 年 12 月 22 日の単一行であり、この行が選択されたのは、ID が最大 (2>1) であるためです。

4

7 に答える 7

1
SELECT *
FROM table
WHERE ID IN ( SELECT MAX(ID)
              FROM table
              GROUP BY Date )
于 2012-09-04T06:39:12.153 に答える
1

これは機能します。

SELECT  *
FROM    tableName a
            INNER JOIN
            (
                SELECT `DATE`, MAX(ID) maxID
                FROM tableName
                GROUP BY `DATE`
            ) b ON a.id = b.MaxID AND
                a.`date` = b.`date`

SQLFiddle デモ

于 2012-09-04T06:39:41.950 に答える
1

ウィンドウ関数をサポートするデータベースがあり、date列が実際にdate(でなくdatetime) であると仮定すると、次のようになります。

SELECT
    * --TODO - Pick columns
FROM
    (
       SELECT ID,[Date],Total,ROW_NUMBER() OVER (PARTITION BY [Date] ORDER BY ID desc) rn
       FROM [Table]
    ) t
WHERE
   rn = 1

1 日あたり 1 行を生成する必要があります。特定の日に選択された行は、ID値が最も高い行です。

于 2012-09-04T06:41:42.203 に答える
0

別の簡単な方法は

SELECT TOP 1 * FROM YourTable ORDER BY ID DESC

そして、これが最も簡単な方法だと思います!

于 2012-09-20T06:26:59.240 に答える
0
SELECT * FROM TABLE_SUM S WHERE S.ID = 
( 
SELECT MAX(ID) FROM TABLE_SUM
WHERE CDATE = GG.CDATE
GROUP BY CDATE 
) 
于 2014-03-07T19:58:03.377 に答える
0
Select MAX(ID),Data,Total from foo

MySQL 用

于 2012-09-04T06:38:25.010 に答える
0

おそらく

SELECT * FROM your_table ORDER BY ID DESC LIMIT 1
于 2012-09-04T06:38:45.177 に答える