【发布时间】:2022-01-24 17:03:27
【问题描述】:
假设我们有 2 张桌子
@Table
export class Parent extends Model {
@PrimaryKey
@HasMany(() => child, { as: 'child', foreignKey: 'PARENT_ID' })
@Column
ID: number
@Column
NAME: string
....
}
@Table
export class Child extends Model{
@PrimaryKey
@Column
ID: number
@Column
NAME: string
@PrimaryKey
@BelongsTo(()=>Parent,{ as: 'parent', targetKey: 'ID', foreignKey: 'PARENT_ID' })
@Column
PARENT_ID: number
@Column
DOB: Date
.....
}
这是表格数据
___________ ______________________________________
| PARENTS || CHILDRENS |
| ID NAME || ID NAME PARENT_ID DOB |
| 1 David || 1 Oscar 1 2018-05-12 06:28:52 |
| 2 John || 2 Zac 2 2018-08-25 10:48:34 |
| 3 Steve || 3 Greg 1 2019-03-15 16:58:22 |
| || 4 Samuel 3 2019-12-16 23:12:34 |
| || 5 James 2 2020-03-25 08:48:52 |
| || 6 Dan 1 2021-01-05 16:48:12 |
|___________|| 7 Kelly 3 2021-07-19 14:25:54 |
| 8 Gary 1 2021-11-10 14:23:12 |
|______________________________________|
我希望结果是
___________________________________________________________________________________
| RESULT |
| Parent_ID Parent_Name Child_ID Child_Name DOB |
| 1 David 8 Gary 2021-11-10 14:23:12 |
| 3 Steve 7 Kelly 2021-07-19 14:25:54 |
| 2 John 5 James 2020-03-25 08:48:52 |
|___________________________________________________________________________________|
我更喜欢 Sequelize 中的答案,但即使是对 SQL 的原始查询也会很好,因为我对此非常坚持。
这只是一个小规模的例子,但实际上有成千上万的父母和数十万的孩子,所以我也对结果进行了分页。所以性能也很重要:)
【问题讨论】:
-
为什么输出是 Gary 而不是 Dan?也许是“最后出生的”?
-
@RickJames 如果您按 DOB DESC 排序,您会得到“最后出生的”,但我只希望每个父母都有一个。所以换句话说,每个父母都会收到他最后一个出生的孩子
-
排序不能解决它——结果集中有 8 行,而不是你想要的 3 行。查看我添加的标签。
-
@RickJames 就是这个问题!
-
双胞胎呢?或者他们一定有不同的出生时间?
标签: mysql sql sequelize.js sequelize-typescript groupwise-maximum