如果 nickName 不为 null,则按 nickName 排序,否则按 firstName 排序
Order by nickName if nickName is not null, otherwise order by firstName
我有同样的问题
但是我没有找到任何解决方案来使用 nestJs 和带有 Repository-orm 的 postgres。
这是我的代码。
const contacts = await this.contactRepository.find({
order: { nickName: 'ASC', firstName: 'ASC', lastName: 'ASC' },
});
你必须使用 QueryBuilder
。有关详细信息,请参阅 答案。
正如您在 中正确建议的那样,您必须结合使用 ORDER BY 子句和 COALESCE(...).
示例查询:
const contacts = await this.contactRepository
.createQueryBuilder('contact')
.orderBy('COALESCE(contact.nickName, contact.firstName, contact.lastName)', 'ASC')
.getMany();
我有同样的问题
但是我没有找到任何解决方案来使用 nestJs 和带有 Repository-orm 的 postgres。
这是我的代码。
const contacts = await this.contactRepository.find({
order: { nickName: 'ASC', firstName: 'ASC', lastName: 'ASC' },
});
你必须使用 QueryBuilder
。有关详细信息,请参阅
正如您在
示例查询:
const contacts = await this.contactRepository
.createQueryBuilder('contact')
.orderBy('COALESCE(contact.nickName, contact.firstName, contact.lastName)', 'ASC')
.getMany();