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:
@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[];
}@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[];
}@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:
const pages = await getRepository(Page).find({
relations: {
localeData: {
data: true,
},
},
order: {
localeData: {
data: {
updatedAt: "DESC",
},
},
},
skip: 0,
take: 10,
});Error:
{
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:
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:
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,
});Source: typeorm/typeorm