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

Hibernate Distinct with order by

    選択したdistinctの一部ではない列で並べ替えても意味がありません 列。

    コレクションに参加していないので、とにかくレコードは区別されます(少なくとも、PKは異なります)。区別は省略できます:

    select distinct city 
    from City city 
      where city.id is not null 
        and upper(city.name) != upper('Unknown')  
        and city.state.id =:stateId 
    order by upper(trim(city.name))
    

    一般に、結果セットに実際に重複があり、それらを排除したい場合は、サブクエリを使用してそれを実現できます。

    select city
    from City city
      where city.id in (select c.id from City c join c.someCollection sc where ...)
    order by upper(trim(city.name))
    

    このアプローチの他の利点は、distinctとして、おそらくパフォーマンスの面で優れていることです。 通常、行の作成はデータベースでのコストのかかる操作です。



    1. MariaDBで名前付きタイムゾーンを設定する方法

    2. Laravelクエリビルダーで作成日ごとに行をカウントするにはどうすればよいですか?

    3. Oracle ISNULL()と同等

    4. Oracleでログオントリガーを無効にする