要在使用Typeorm查询Postgres数据库时返回 ROW_NUMBER()
,您可以使用QueryBuilder来构建自定义查询
假设您有一个名为 users
的表,包含 id
, name
和 age
字段。这个示例说明如何返回每个按年龄排序的用户行的行号:
npm install typeorm pg
user.entity.ts
)中定义一个 User
实体:import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
@Entity("users")
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
age: number;
}
import { getRepository, QueryBuilder } from "typeorm";
import { User } from "./user.entity";
async function getUsersWithRowNumber() {
const userRepository = getRepository(User);
const usersWithRowNumber = await userRepository
.createQueryBuilder("user")
.select("ROW_NUMBER() OVER (ORDER BY user.age)", "row_number")
.addSelect("user.id", "id")
.addSelect("user.name", "name")
.addSelect("user.age", "age")
.getRawMany();
return usersWithRowNumber;
}
在此示例中,我们使用 createQueryBuilder
方法构建查询,使用 ROW_NUMBER() OVER (ORDER BY user.age)
函数为每行生成一个基于年龄排序的行号。然后,我们选择所需的列并将结果作为原始结果(包含行号)返回。
getUsersWithRowNumber
函数将返回一个对象数组,每个对象都包含 row_number
、id
、name
和 age
属性。
注意:这是一个特定于 Postgres 的查询,因为 ROW_NUMBER()
是 Postgres 的窗口函数。在使用其他数据库时,可能需要调整查询以适应特定的数据库函数。
小程序云开发官方直播课(应用开发实战)
第五届Techo TVP开发者峰会
DBTalk技术分享会
第四期Techo TVP开发者峰会
腾讯云数据库TDSQL训练营
DBTalk技术分享会
腾讯云GAME-TECH沙龙
腾讯云GAME-TECH游戏开发者技术沙龙
DBTalk
领取专属 10元无门槛券
手把手带您无忧上云