【问题标题】:Query to fetch all objects sorted by a distinct property of the columns?查询以获取按列的不同属性排序的所有对象?
【发布时间】:2020-10-16 12:39:07
【问题描述】:

我正在使用 Hibernate,我想执行以下查询:

SELECT e FROM Posicao e WHERE e.id IN (SELECT DISTINCT p.papel FROM Posicao p)

但我得到以下信息:

提示:没有运算符匹配给定的名称和参数类型。你 可能需要添加显式类型转换。 **********错误**********

错误:运算符不存在:整数 = 不同的字符

我相信它缺少强制转换命令,但我无法弄清楚。我的列 id 由整数组成,而其他列由 VARCHAR 组成。

例如,当我通过 e.papel 更改 e.id 时,它工作得很好,但这不是我想要的。

有人知道如何解决吗?

【问题讨论】:

    标签: java database postgresql hibernate select


    【解决方案1】:

    你可以投:

    select e from Posicao e where e.id in (select p.papel::int from Posicao p)
    

    并不是我删除了distinct,这对于in 是不必要的。不过,您查询的目的仍不清楚。无论如何,我建议使用exists 而不是in,因为许多数据库倾向于更好地优化它:

    select e 
    from posicao p
    where exists (select 1 from posicao p1 where p1.papel::int = p.id)
    

    【讨论】:

    • 感谢您的回答。它没有用,我将不得不添加更多细节。
    猜你喜欢
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多