Ken*_*Ken 53 sql oracle hibernate oracle11g
我有一个看起来像这样的查询:
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
Run Code Online (Sandbox Code Playgroud)
这导致以下异常:
Caused by: org.hibernate.exception.SQLGrammarException: ORA-01791: not a SELECTed expression
Run Code Online (Sandbox Code Playgroud)
如果我删除DISTINCT关键字,查询运行没有问题.如果我删除order by子句,则查询运行没有问题.不幸的是,我似乎无法获得没有重复的有序结果集.
Lam*_*mak 89
您正尝试使用未计算的列来排序结果.如果您没有DISTINCT那个,这不会是一个问题,但由于您的查询基本上只按share.rooms列分组,它如何使用其他列可以为同share.rooms一个列分配多个值的结果集 ?
这篇文章有点旧,但我为解决此错误所做的一件事是包装查询,然后像这样在外部应用 order by。
SELECT COL
FROM (
SELECT DISTINCT COL, ORDER_BY_COL
FROM TABLE
// ADD JOINS, WHERE CLAUSES, ETC.
)
ORDER BY ORDER_BY_COL;
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
56984 次 |
| 最近记录: |