0

テーブル :

 ID                    in                   out
  1   2000-01-01 00:00:00   2000-01-01 12:00:00
  1   2000-01-02 00:00:00                  NULL
  2   2000-01-01 00:00:00   2000-01-01 12:00:00 
  2   2000-01-02 00:00:00   2000-01-02 11:00:00
  3   2000-01-01 00:00:00                  NULL

結果 :

 ID                    in                   out
  1   2000-01-02 00:00:00                  NULL
  2   2000-01-02 00:00:00   2000-01-01 11:00:00
  3   2000-01-01 00:00:00                  NULL

そのため、すべての IDで最新ものを取得し、 ID に従って並べ替えたいと考えています。GROUP BY を試しましたが、価値のあるものを取得しているようです。

私が現在持っているものは似ています

SELECT * 
  FROM TABLE 
GROUP BY ID 
ORDER BY OUT IS NULL DESC, OUT DESC;
4

1 に答える 1

3

適切な値を選択するだけでなく、次の順序で注文する必要があります。

select t.*
from t join
     (select t.id, max(t.in) as maxin
      from t
      group by t.id
     ) tsum
     on t.id = tsum.id and t.in = tsum.maxin
order by id
于 2013-04-24T02:47:02.763 に答える