0

次のようなテーブルがあります

item_id    position_number         position_date
   1             9              2013-06-29 15:12:58
   2             7              2013-07-25 15:12:58
  18             5              2013-07-08 12:07:00
  13             9              2013-07-08 12:07:00

position_number で項目グループを取得し、position_date DESC で並べ替えると、クエリは次のように返されます。

item_id    position_number         position_date
  13             9              2013-07-08 12:07:00
   2             7              2013-07-25 15:12:58
  18             5              2013-07-08 12:07:00

DISTINCT と GROUP BY を使用するいくつかのソリューションを実装してきましたが、目的の結果が得られません。

誰かがそれを解決する方法について考えを持っていますか?

4

6 に答える 6

3
SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  position_number, MAX(position_date) position_date
            FROM    tableName
            GROUP   BY position_number
        ) b ON a.position_number = b.position_number AND
                a.position_date = b.position_date
ORDER   BY a.position_number DESC
于 2013-07-29T19:46:14.653 に答える
3

サンプル データを指定すると、このクエリは指定された結果セットを返します。

SELECT t.item_id
     , t.position_number
     , t.position_date
  FROM ( SELECT MAX(n.item_id) AS max_item_id
           FROM mytable n
          GROUP BY position_number
       ) m
   JOIN mytable t
     ON t.item_id = m.max_item_id
  ORDER BY t.position_number DESC

: これは、item_idposition_number ごとに 1 つを選択しています。これは、指定された item_id が 1 回だけ表示され、単一の position_number を持つことを前提としています。(item_id を複数の postion_number に関連付けることができる場合、クエリを微調整できます。これはMAX()関数を使用item_idして最大値を持つものを選択しています。(除外される行の唯一の例は item_id=1 です。)

于 2013-07-29T19:47:16.713 に答える
2

これを試して

select * from your_table group by position_number order by position_date DESC

編集:

 SELECT `item_id`, max(`position_number`) position_number , max(`position_date`) position_date FROM TABLENAME
GROUP BY POSITION_NUMBER 
ORDER BY POSITION_DATE DESC

デモ

于 2013-07-29T19:45:19.970 に答える
0

ここにSQLFiddleがあります

SELECT * FROM TABLE_NAME
    GROUP BY POSITION_NUMBER 
    ORDER BY POSITION_DATE DESC
于 2013-07-29T19:46:53.540 に答える
0

このコードを試してください:

SELECT * FROM TABLE_NAME GROUP BY POSITION_NUMBER ORDER BY POSITION_DATE DESC
于 2013-07-29T19:47:25.047 に答える