2013-03-07 9 views
40

私はこのようになりますクエリを持っている:DISTINCTキーワードを使用すると、このエラーが発生しますない選択された式

次の例外になり
SELECT DISTINCT share.rooms 
FROM Shares share 
    left join share.rooms.buildingAdditions.buildings.buildingInfoses as bi 
... //where clause omitted 
ORDER BY share.rooms.floors.floorOrder, share.rooms.roomNumber, 
     share.rooms.firstEffectiveAt, share.shareNumber, share.sharePercent 

:私は削除した場合

Caused by: org.hibernate.exception.SQLGrammarException: ORA-01791: not a SELECTed expression 

DISTINCTキーワードを指定すると、クエリは問題なく実行されます。 order by句を削除すると、クエリは問題なく実行されます。残念ながら、私は、重複なしで順序付けられた結果セットを得るように見えることはできません。

+1

お返事ありがとう@Lamak。なぜDISTINCTがDISTINCTなしでそれらを無視しないので、DISTINCTがdbに他の列を無視させるのかはわかりません。しかし、それが重要であるとすれば、どのように順序付けされた重複した自由結果セットを得ることができますか? – Ken

+2

あなたはどのようにそれらを注文したいですか? 'share.rooms'カラムに対して重複した空き結果が必要な場合は、同じ部屋**には' floorOrder'や 'roomNumber'や他のカラムの値が異なるかもしれないので、あなたはどうしたいですか?それらの最小値によって注文されるべきか?、最大? – Lamak

+0

私は今参照してください。再度、感謝します。 – Ken

答えて

65

計算されていない列の結果を注文しようとしています。 DISTINCTがない場合は問題はありませんが、クエリは基本的にshare.rooms列でのみグループ化されているため、同じ結果の複数の値を持つ他の列でその結果セットを並べ替えることはできますか?

関連する問題