sql >> データベース >  >> RDS >> Mysql

MySQLの各record_idのすべての列の最後のnull以外のレコードを取得します

    これはあなたの問題を解決するかもしれません:

    select 
      record_id,
      substring_index(group_concat(Data1 order by Time desc), ',', 1) Data1,
      substring_index(group_concat(Data2 order by Time desc), ',', 1) Data2,
      substring_index(group_concat(Time  order by Time desc), ',', 1) Time
    from records
    group by record_id
    ;
    

    他の答えほど速くはないかもしれませんが、別のバージョンです...試してみてください。 Data3がある場合 テーブルの列に、Data1をコピーして貼り付けることができます 列を作成し、この列のすべての参照を新しい列に変更するだけです。

    これがどのように機能するかを説明するために:group_concat 関数は、列のnull以外のすべての値を区切り文字(,)で連結します デフォルト)。連結の前に列を注文できます。 Oracle、Postgreなどのウィンドウ関数のように機能します... substring_index リストは時間の降順であるため、は最初の連結値を取得しているだけです。



    1. Rails4の移行でカスタム主キーを設定する際の問題

    2. jdbcurlと一緒に接続文字列を使用するにはどうすればよいですか

    3. IDと最新の日時によるMySQLグループ

    4. MySQLはステータスを表示します-アクティブまたは合計接続?