javascript - TypeORM select with case insensitive distinct

标签 javascript node.js postgresql typeorm

我正在尝试创建一个连接到 postgresql 数据库的 TypeORM 查询构建器,以获取数据库中的所有唯一名称。我的查询看起来像这样

names = await this._context.manager
        .getRepository(Names)
        .createQueryBuilder('names')
        .select('DISTINCT ON (names.name) names.name')
        .orderBy('names.name', 'ASC')
        .getRawMany();
现在,此查询获取数据库中的所有名称,但它区分大小写,因此它无法从 'jane doe' 中挑选出像 'Jane Doe' 这样的重复项。到目前为止,我已经尝试像这样制作不同的大写/小写:.select('DISTINCT ON LOWER(names.name) names.name')但这不起作用。我还找到了一个 .distinctOn() 函数,但我也不能不区分大小写。
我是 typeORM 的新手,所以我对从这里去哪里有点茫然,有什么想法吗?
如果这有所作为,我正在使用 Node.JS 开发 postgresql 数据库。

最佳答案

这个问题的主题是 postgres 而不是 typeORM。
类似问题:Eliminating Duplicate rows in Postgres .
在您的情况下,正确的语法是:

names = await this._context.manager
        .getRepository(Names)
        .createQueryBuilder('names')
        .select('DISTINCT ON (LOWER(names.name)) names.name')
        .orderBy('LOWER(names.name)', 'ASC')
        .getRawMany();
 

关于javascript - TypeORM select with case insensitive distinct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62894090/

相关文章:

javascript - 前缀 JSON 值 - JSON/JQuery

javascript - 使用 intellij 进行 headless Jasmine 测试

javascript - 当依赖 Node 模块被 require() 时,什么时候(编译/运行时)链接到项目?

sql - 使用单个查询在 postgres 数据库中搜索多个表?

entity-framework - 如何从 Entity Framework 6(数据库优先)和 Npgsql 执行存储过程?

ios - 关于 SQL 和 Swift 的建议和信息

javascript - 如何从 Webix 中的弹出数据表中获取复选框的特定选择?

javascript - 事件监听器和本地数据存储

node.js - 更新 Mongoose 模型对象的数组项

node.js - 在express.js中设置服务器超时