sql - 如何在TypeORM中编写子查询加入、排序并返回最新结果
问题描述
我想加入两个表,对它们进行排序并返回最新使用返回的加入表的修改日期。我已经在 SQL 服务器上成功编写了 SQL 查询,它返回了所需的结果。但是我需要编写这个查询来使用 TypeORM。我如何在 TypeORM 中编写这个。
这是分解。我创建了两个虚拟表,Assets 和 LotBids 表,就像这样
(assetsInSaleEventId varchar(50),
assetNumber varchar(100),
lotNumber varchar(100),
saleEventId varchar(50),
PRIMARY KEY (assetsInSaleEventId)
)
insert into @Assets values
--First Sale Event (ID = '1B68BD21-238E-4B00-B7F2-FABC0C2690AA')
('1B68BD21-238E-4B00-B7F2-FABC0C2690CA', 'ab101', '1', '1B68BD21-238E-4B00-B7F2-FABC0C2690AA'),
('1B68BD21-238E-4B00-B7F2-FABC0C2690CB', 'ab102', '2', '1B68BD21-238E-4B00-B7F2-FABC0C2690AA'),
--Second Sale Event (ID = '1B68BD21-238E-4B00-B7F2-FABC0C2690AB')
('1B68BD21-238E-4B00-B7F2-FABC0C2690CE', 'ab105', '5', '1B68BD21-238E-4B00-B7F2-FABC0C2690AB'),
('1B68BD21-238E-4B00-B7F2-FABC0C2690CF', 'ab106', '6', '1B68BD21-238E-4B00-B7F2-FABC0C2690AB'),
-- Third Sale Event (ID = '1B68BD21-238E-4B00-B7F2-FABC0C2690AC')
('1B68BD21-238E-4B00-B7F2-FABC0C2690CI', 'ab109', '9', '1B68BD21-238E-4B00-B7F2-FABC0C2690AC'),
('1B68BD21-238E-4B00-B7F2-FABC0C2690CJ', 'ab110', '10', '1B68BD21-238E-4B00-B7F2-FABC0C2690AC'),
--Fourth Sale Event (ID = '1B68BD21-238E-4B00-B7F2-FABC0C2690AD')
('1B68BD21-238E-4B00-B7F2-FABC0C2690CM', 'ab113', '13', '1B68BD21-238E-4B00-B7F2-FABC0C2690AD'),
('1B68BD21-238E-4B00-B7F2-FABC0C2690CO', 'ab114', '14', '1B68BD21-238E-4B00-B7F2-FABC0C2690AD'),
--Fifth Sale Event (ID = '1B68BD21-238E-4B00-B7F2-FABC0C2690AE')
('1B68BD21-238E-4B00-B7F2-FABC0C2690CR', 'ab117', '17', '1B68BD21-238E-4B00-B7F2-FABC0C2690AE'),
('1B68BD21-238E-4B00-B7F2-FABC0C2690CS', 'ab118', '18', '1B68BD21-238E-4B00-B7F2-FABC0C2690AE')
declare @Lots table
(lotBidsId varchar(50),
assetsInSaleEventId varchar(50),
clientNumber varchar(200),
clientName varchar(100),
auditModifiedDatetime datetime,
primary key (lotBidsId)
)
insert into @Lots values
-- Lot Bids on Asset '1B68BD21-238E-4B00-B7F2-FABC0C2690CA', for first Sale Event
('1B68BD21-238E-4B00-B7F2-FABC0C2690LA', '1B68BD21-238E-4B00-B7F2-FABC0C2690CA', 'ray100', 'Raymond', '2021-06-21 15:10:15'),
('1B68BD21-238E-4B00-B7F2-FABC0C2690LB', '1B68BD21-238E-4B00-B7F2-FABC0C2690CA', 'ray100', 'Raymond', '2021-06-23 15:10:15'),
-- Lot Bids on Asset '1B68BD21-238E-4B00-B7F2-FABC0C2690CB', for first Sale Event
('1B68BD21-238E-4B00-B7F2-FABC0C2690LD', '1B68BD21-238E-4B00-B7F2-FABC0C2690CB', 'ray100', 'Raymond', '2021-06-21 16:10:15'),
('1B68BD21-238E-4B00-B7F2-FABC0C2690LE', '1B68BD21-238E-4B00-B7F2-FABC0C2690CB', 'ara100', 'Arash', '2021-06-23 16:10:15'),
-- Lot Bids on Asset '1B68BD21-238E-4B00-B7F2-FABC0C2690CC', for first Sale Event
('1B68BD21-238E-4B00-B7F2-FABC0C2690LG', '1B68BD21-238E-4B00-B7F2-FABC0C2690CC', 'ara100', 'Arash', '2021-06-21 17:10:15'),
('1B68BD21-238E-4B00-B7F2-FABC0C2690LH', '1B68BD21-238E-4B00-B7F2-FABC0C2690CC', 'ray100', 'Raymond', '2021-06-23 17:10:15'),
-- Lot Bids on Asset '1B68BD21-238E-4B00-B7F2-FABC0C2690CD', for first Sale Event
('1B68BD21-238E-4B00-B7F2-FABC0C2690LJ', '1B68BD21-238E-4B00-B7F2-FABC0C2690CD', 'franc100', 'Francis', '2021-06-21 18:10:15'),
('1B68BD21-238E-4B00-B7F2-FABC0C2690LK', '1B68BD21-238E-4B00-B7F2-FABC0C2690CD', 'ara100', 'Arash', '2021-06-23 18:10:15'),
-- Lot Bids on Asset '1B68BD21-238E-4B00-B7F2-FABC0C2690CE', for second Sale Event
('1B68BD21-238E-4B00-B7F2-FABC0C2690LN', '1B68BD21-238E-4B00-B7F2-FABC0C2690CE', 'franc100', 'Francis', '2021-07-12 18:10:15'),
('1B68BD21-238E-4B00-B7F2-FABC0C2690LO', '1B68BD21-238E-4B00-B7F2-FABC0C2690CE', 'ray100', 'Arash', '2021-07-15 18:10:15'),
-- Lot Bids on Asset '1B68BD21-238E-4B00-B7F2-FABC0C2690CF', for second Sale Event
('1B68BD21-238E-4B00-B7F2-FABC0C2690LR', '1B68BD21-238E-4B00-B7F2-FABC0C2690CF', 'franc100', 'Francis', '2021-07-12 19:10:15'),
-- Lot Bids on Asset '1B68BD21-238E-4B00-B7F2-FABC0C2690CG', for second Sale Event
('1B68BD21-238E-4B00-B7F2-FABC0C2690LU', '1B68BD21-238E-4B00-B7F2-FABC0C2690CG', 'franc100', 'Francis', '2021-07-12 20:10:15'),
('1B68BD21-238E-4B00-B7F2-FABC0C2690LV', '1B68BD21-238E-4B00-B7F2-FABC0C2690CG', 'ray100', 'Arash', '2021-07-15 20:10:15')
select a.assetNumber, l.assetsInSaleEventId, l.lastModified, l.clientNumber, l.clientName
from @Assets a
inner join
(
select
l.assetsInSaleEventId,
l.auditModifiedDatetime as lastModified,
l.clientNumber,
l.clientName
from @Lots l
where l.auditModifiedDatetime = (select max(l2.auditModifiedDatetime)
where l2.assetsInSaleEventId = l.assetsInSaleEventId
)
) l
on a.assetsInSaleEventId = l.assetsInSaleEventId
where a.saleEventId = '1B68BD21-238E-4B00-B7F2-FABC0C2690AA'
以上是我的 SQL 查询,用于连接、排序和返回每个排序结果的最新值。如何在 typeORM 中编写查询?
解决方案
推荐阅读
- angular - 角度变量值的变化不会反映在 DOM 中
- reactjs - 有没有办法使用 react-jsonschema-form 将枚举值之一设为强制?
- reactjs - 如何使用 React Hooks 单独切换手风琴面板?
- networking - 在ns-2中实现VANET拥塞控制算法
- c# - 解决 IQueryable 没有为 EF 实现 IDbAsyncQueryProvider
- python - 从 Pandas Dataframe 中的第一个非 NaN 条目导出日期
- c# - 覆盖DataTable c#中的列,添加空列
- spring-boot - 无法使用 docker-compose 文件将 springboot 模块托管到 docker
- eclipse - 使用 Birt 报告显示/隐藏表格中的单元格
- java - 在 java 中使用本地证书颁发机构的证书通过 SSL 连接 Active Directory