admin管理员组

文章数量:1333442

In my backend using nestjs + typeorm + postgresql I have a CustomRepository and want to repalce some plain sql queries.

This is what I have

const sqlQuery = `SELECT DISTINCT "myColumn" FROM "myTable"`
const sqlRes = await this.query(sqlQuery);

I am trying to get something like this

this.find({select:["myColumn"]}); // note the missing DISTINCT

But this is giving me the plete column but I want just the DISTINCT values.

I found a lot of weird createQueryBuilder().select(DISTINCT "myColumn" FROM "...... etc... solutions, which are not really giving my any benefit over my working solution.

In my backend using nestjs + typeorm + postgresql I have a CustomRepository and want to repalce some plain sql queries.

This is what I have

const sqlQuery = `SELECT DISTINCT "myColumn" FROM "myTable"`
const sqlRes = await this.query(sqlQuery);

I am trying to get something like this

this.find({select:["myColumn"]}); // note the missing DISTINCT

But this is giving me the plete column but I want just the DISTINCT values.

I found a lot of weird createQueryBuilder().select(DISTINCT "myColumn" FROM "...... etc... solutions, which are not really giving my any benefit over my working solution.

Share Improve this question edited Dec 2, 2021 at 13:56 Audwin Oyong 2,5313 gold badges19 silver badges36 bronze badges asked May 4, 2020 at 10:39 FuzzyTemperFuzzyTemper 7836 gold badges10 silver badges25 bronze badges 0
Add a ment  | 

2 Answers 2

Reset to default 6

You could do:

await getManager().createQueryBuilder('entity')
  .select('column')
  .distinct(true)
  .getRawMany();

For some reason getMany or getCount doesn't work for distinct. As 0xCAP said above:

await getManager().createQueryBuilder('entity')
  .select('column')
  .distinct(true)
  .getRawMany();

If you want to keep other columns (as your question), just use addSelect instead of select

本文标签: javascriptTypeORM Custom Repositoryselect distinct values from specified columnStack Overflow