0

同様の値ごとに1行だけ取得したい場合もありますが、通常は次のようにします。

SELECT * GROUP BY Text ORDER BY Date DESC

GROUP を使用して同様の行を選択する私の問題は、行の最新の行から値を取得できないことです (残っている行を選択する基準がよくわかりません)。グループ内の最新の行のみを保持したい。

自己結合でそれを行う方法は知っていますが、ステートメントがすでに非常に長い場合、少し複雑に思えます。より短い方法はありますか?GROUP BY の代わりに DISTINCT を使用しているのではないでしょうか?

4

2 に答える 2

1

複数の列を持つテーブルがあり、そのうちの 2 つは と であると仮定しGroupIDますDATE。それぞれの最新レコードを選択したい場合は、それぞれの最新レコードをGroupID取得するサブクエリが必要です。例DateGroupID

SELECT  a.*             -- this just selects all records from original table
FROM    tableName a
        INNER JOIN
        (
            -- this subquery gets the latest DATE entry for each GROUPID
            SELECT GroupID, MAX(DATE) maxDate   
            FROM tableName
            GROUP BY GroupID
        ) b ON a.GroupID = b.GroupID AND
                a.Date = b.maxDate

この答えが明確でない場合は、質問してください:D

于 2012-11-23T05:57:41.027 に答える