#7502·typeorm

Unknown column 'distinctAlias' when using find with pagination and sorting by a field from another table

Author: bandit-hire5Created Mar 26, 2021Updated Sep 7, 2026
Labelsbugdriver: mariadb

Issue type:

[ ] question [x] bug report [ ] feature request [ ] documentation issue

Database system/driver:

[ ] cordova [ ] mongodb [ ] mssql [x] mysql / mariadb [ ] oracle [ ] postgres [ ] cockroachdb [ ] sqlite [ ] sqljs [ ] react-native [ ] expo

TypeORM version:

[] latest [ ] @next [x] 0.3.0-rc.21

Steps to reproduce or a small repository showing the problem:

Model:

javascript
@Entity()
export default class Page {
  @PrimaryGeneratedColumn("uuid")
  id: string;

  @Column()
  ownerId: string;

  @Column()
  type: string;

  @OneToMany(
    () => PageLocaleData,
    (pageLocaleData: PageLocaleData) => pageLocaleData.page,
    { eager: false, cascade: true }
  )
  @ValidateNested()
  localeData: PageLocaleData[];
}
javascript
@Entity()
@Unique(["page", "locale"])
export default class PageLocaleData {
  @PrimaryGeneratedColumn("uuid")
  id: string;

  @Column({ type: "enum", enum: Locale })
  locale: Locale;

  @ManyToOne(
    () => Page,
    (page: Page) => page.localeData,
    { onDelete: "CASCADE" }
  )
  page: Page;

  @OneToMany(
    () => PageData,
    (pageData: PageData) => pageData.pageLocaleData,
    { cascade: true, eager: false }
  )
  @ValidateNested()
  data: PageData[];
}
javascript
@Entity()
@Unique(["pageLocaleData", "status"])
export default class PageData {
  @PrimaryGeneratedColumn("uuid")
  id: string;

  @ManyToOne(
    () => PageLocaleData,
    (pageLocaleData: PageLocaleData) => pageLocaleData.data,
    { onDelete: "CASCADE" }
  )
  pageLocaleData: PageLocaleData;

  @Column({ type: "enum", enum: PageDataStatus })
  status: PageDataStatus;

  @Column({ default: "" })
  title: string;

  @Column({ default: 0 })
  version: number;

  @Column({ default: 0 })
  updatedAt: number;
}

Query:

javascript
const pages = await getRepository(Page).find({
      relations: {
        localeData: {
          data: true,
        },
      },
      order: {
         localeData: {
          data: {
            updatedAt: "DESC",
          },
        },
      },
      skip: 0,
      take: 10,
    });

Error:

javascript
{
  code: 'ER_BAD_FIELD_ERROR',
  errno: 1054,
  sqlState: '42S22',
  sqlMessage: "Unknown column 'distinctAlias.Page_localeData_data_updatedAt' in 'field list'"
}

SQL:

Typeorm generates such query:

sql
SELECT DISTINCT `distinctAlias`.`Page_id` as "ids_Page_id", `distinctAlias`.`Page_localeData_data_updatedAt` FROM (SELECT `Page`.`id` AS `Page_id`, `Page`.`ownerId` AS `Page_ownerId`, `Page`.`type` AS `Page_type` FROM `page` `Page` INNER JOIN `page_locale_data` `Page_localeData` ON `Page_localeData`.`pageId`=`Page`.`id`  INNER JOIN `project` `Page_project` ON `Page_project`.`id`=`Page`.`projectId`  LEFT JOIN `page_data` `Page_localeData_data` ON `Page_localeData_data`.`pageLocaleDataId`=`Page_localeData`.`id`) `distinctAlias`  ORDER BY `distinctAlias`.`Page_localeData_data_updatedAt` DESC, `Page_id` ASC LIMIT 25;

There is no Page_localeData_data.updatedAt in the selected fields for sub query and it's not possible to add it.

This also not working:

javascript
const pages = await getRepository(Page).find({
      select: {
        id: true,
        localeData: {
          data: true,
        },
      },
      relations: {
        localeData: {
          data: {
            updatedAt: true,
          },
        },
      },
      order: {
         localeData: {
          data: {
            updatedAt: "DESC",
          },
        },
      },
      skip: 0,
      take: 10,
    });