我有两个表,它们之间具有一对多的关系,第一个表称为父表,第二个表称为子表(表的真实/原始名称不完全是父表和子表,但我更改了名称以简化问题并使其更公开);我想为最近的父母插入所有的孩子,我想通过分组来实现,下面的查询返回我需要的结果,但是有什么办法让这个结果被组通过吗?
SELECT P.ID, C.*
FROM
(SELECT top 1 Parent.ID FROM Parent P ORDER BY P.CreatedOnDate DESC) P
INNER JOIN Children C ON P.Id = C.ParentID
我在下面创建了该文件,但是它不起作用,因为RowN不在子表中
SELECT
MAX(Children.Name),
P.ID
ROW_NUMBER OVER (PARTITION BY P.ID ORDER MY MAX(P.CreatedOnDate)) AS RowN
FROM Parent P
INNER JOIN Children C ON P.Id = C.ParentID
WHERE RowN = 1
GROUP BY P.ID
ORDER BY P.CreatedOnDate DESC
答案 0 :(得分:0)
我了解到您正在尝试选择最近创建的父母的孩子。
如果是这样,则无需使用聚合。您可以简单地在现有endpoint = "MY_ENDPOINT"
sendEmail() {
const managerData = {
toEmail: this.manager.managerEmail,
managerName: this.manager.managerFirstName,
managerEmail: this.manager.managerEmail,
managerUUID: this.manager.managerUUID
}
this.httpClient.post(this.endpoint, managerData).subscribe(data => console.log('email sent: ', data));
}
查询中添加WHERE
子句,并使用JOIN
条件,确保选择的父记录是表中的最新记录:
NOT EXISTS
一个更有效的选择是使用窗口函数SELECT p.id, c.*
FROM parent p
INNER JOIN children c ON c.ParentID = p.id
WHERE NOT EXISTS (SELECT 1 FROM parent p1 WHERE p1.CreatedOnDate > p.CreatedOnDate)
:
RANK() OVER()