首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >选择DISTINCT,ORDER表达式在从Oracle迁移到Postgres时必须出现在选择列表中-错误

选择DISTINCT,ORDER表达式在从Oracle迁移到Postgres时必须出现在选择列表中-错误
EN

Stack Overflow用户
提问于 2022-05-13 17:53:37
回答 1查看 89关注 0票数 0

我正在将数据库从Oracle迁移到Postgres。我们的spring引导应用程序中有许多硬编码的查询,这些查询现在由于迁移而中断,我不得不修复它们。其中之一是:

代码语言:javascript
复制
String sql = "SELECT DISTINCT * FROM TABLE_A A " +
    "INNER JOIN TABLE_B B ON A.BIC = B.BIC " +
    "WHERE B.CUST_NUMBER=?" +
    "AND A.LOCATION=?" +
    "AND B.STATUS=?" +
    "AND B.LIVE=TRUE" +
    "ORDER BY A.TYPE, A.PARTY";

此查询对oracle运行良好,但不针对postgres运行。在针对postgres运行时,我得到以下错误:SELECT DISTINCT, ORDER BY expressions must appear in select list

在阅读了一些关于相同错误的类似问题,甚至看到类似的问题之后,我对如何解决上述查询的问题一点也不清楚。删除DISTINCT子句将修复错误,但显然它不是相同的查询,因此这是不成功的。

如果有人能提供一些建议,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-13 18:22:40

您的查询可以在Postgres 13及更高版本中使用。如果您启动了一个新项目,那么您应该使用最新版本,而不是以稍微过时的版本开始。

在旧版本中,可以将其封装在派生表中以避免这种情况。

代码语言:javascript
复制
select *
from (
  SELECT DISTINCT * 
  FROM TABLE_A A 
    JOIN TABLE_B B ON A.BIC = B.BIC 
  WHERE B.CUST_NUMBER=?
    AND A.LOCATION=?
    AND B.STATUS=?
    AND B.LIVE=TRUE
) a
ORDER BY A.TYPE, A.PARTY

Postgres 12例

Postgres 14例

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72233673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档