PostgreSQL self join在TypeORM上不工作

am46iovg  于 12个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(127)

我的目标是从USER表中选择用户,其中userId = user_id_creator(谁创建了用户,一些用户可以根据用户角色创建其他用户)我需要将此PostgreSQL SQL查询转换为TypeOrm查询构建器

select  DISTINCT ON (u1.id) *
  from public.user as u1
  inner join  public.user as u2
    on u1.id = u2.created_by

字符串
我在Postgres中执行了它,它工作得很好,我得到了一个创建其他用户的用户列表。但是当我像这样在TypeOrm中转换它时:

const rawData = AppDataSource.manager.query(`
  select  DISTINCT ON (u1.id) *
  from public.user as u1
  right join  public.user as u2
    on u1.id = u2.created_by
  `)


它给了我另一个结果,它选择了创建的用户列表而不是创建者。谢谢

bvuwiixz

bvuwiixz1#

我想我找到了解决方案。实际上,查询在TypeOrm上不起作用,因为我没有指定要选择哪些列,在自连接表时选择所有列,总是从右边给我列,所以我的解决方案是以这种方式指定要选择哪些列:

const rawData = AppDataSource.manager.query(`
  SELECT DISTINCT ON (u1.id) u1.id, u1.email
  FROM public.user as u1
  INNER JOIN  public.user as u2
    ON u1.id = u2.created_b
  `)

字符串

相关问题