我正在数据库上实现审核日志,因此所有内容都有 CreatedAt 和 RemovedAt 列。现在我希望能够列出对象图的所有修订,但我能想到的最好方法是使用联合。我需要获取每个唯一的 CreatedAt 和 RemovedAt id。
如果我得到一个有省份的国家列表,工会看起来像这样:
SELECT c.CreatedAt AS RevisionId from Countries as c where localId=@Country
UNION
SELECT p.CreatedAt AS RevisionId from Provinces as p
INNER JOIN Countries as c ON p.CountryId=c.LocalId AND c.LocalId = @Country
UNION
SELECT c.RemovedAt AS RevisionId from Countries as c where localId=@Country
UNION
SELECT p.RemovedAt AS RevisionId from Provinces as p
INNER JOIN Countries as c ON p.CountryId=c.LocalId AND c.LocalId = @Country
对于更复杂的查询,这可能会变得非常复杂并且可能表现得很差,所以我想看看是否有人能想到更好的方法。这是在 MSSQL 服务器中。
我需要将它们全部放在一个列表中,因为这是在 from 子句中使用的,而真实数据来自加入此列表。