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

DESCの順序でグループ化する方法

    最後のidが必要な場合 askerごとに 、次に集計関数を使用する必要があります:

    SELECT max(id) as id, 
       asker
    FROM questions 
    GROUP by asker 
    ORDER by id DESC
    

    異常な結果が得られた理由は、MySQLがGROUP BYの拡張機能を使用しているためです。 これにより、選択リスト内のアイテムを集約せず、GROUPBY句に含めないようにすることができます。ただし、MySQLは返される値を選択できるため、これは予期しない結果につながる可能性があります。 (GROUPBYへのMySQL拡張機能 を参照してください。 )

    MySQLドキュメントから:

    ここで、テーブルから返す必要がある他の列があるが、それらをGROUP BYに追加したくない場合 取得できる結果に一貫性がないため、サブクエリを使用してこれを行うことができます。 (デモ

    select 
      q.Id,
      q.asker,
      q.other -- add other columns here
    from questions q
    inner join
    (
      -- get your values from the group by
      SELECT max(id) as id, 
        asker
      FROM questions 
      GROUP by asker 
    ) m
      on q.id = m.id
    order by q.id desc
    


    1. MySQL with Entity Framework-何が間違っているのですか?

    2. mysqlデータベースで出現するすべての文字列を検索します

    3. MySQL-DATE_ADDの月間隔

    4. IDのリストをMySQLストアドプロシージャに渡す方法は?