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

mysql-グループタイプごとに最初と最後のレコードを結合しますか?

    GROUP BYのmysqlの「ファンキーな」機能を使用する なし 他の列を集約します。これにより、最初のが返されます。 グループの行。問題は、行をの正しい順序にすることです。 この機能を使用します。通常は、エイリアスクエリを使用します。

    このアプローチは、相関するサブクエリ(行ごとのクエリ)を回避し、テーブルを2回パスするだけで済みます(順序付けの各方向に1回):

    select x2.type, x2.dat as first_dat, y2.dat as last_dat
    from (select *
      from (select type, dat
        from so8735514
        order by 1, 2) x1
      group by 1) x2
    join (select *
      from (select type, dat
        from so8735514
        order by 1, 2 desc) y1
      group by 1) y2 on y2.type = x2.type;
    

    テストコード:

    create table so8735514 (idx int, type text, dat text);
    insert into so8735514 values
    (0, 'a', 'foo1'),
    (1, 'b', 'foo2'),
    (2, 'c', 'foo3'),
    (3, 'a', 'foo4'),
    (4, 'b', 'foo5'),
    (5, 'c', 'foo6'),
    (6, 'a', 'foo7'),
    (7, 'b', 'foo8'),
    (8, 'c', 'foo9');
    

    出力:

    +------+-----------+----------+
    | type | first_dat | last_dat |
    +------+-----------+----------+
    | a    | foo1      | foo7     |
    | b    | foo2      | foo8     |
    | c    | foo3      | foo9     |
    +------+-----------+----------+
    



    1. Railsはpostgresqlにログインできません-PG::Error-パスワード-正しい情報

    2. タイムスタンプ列から現在の月のレコードmysqlを選択します

    3. MySQL –エラーの修正–WordPressデータベースエラークエリのキーPRIMARYの重複エントリINSERTINTO wp_options

    4. このループで5秒ごとに更新されたオブジェクトカウントが表示されないのはなぜですか?