我有一个名为dbo.ObjectOwner的多对多表,具有以下各列:
ObjectId | OwnerId | StartDate |EndDate
其中ObjectId,OwnerId不是主键,而Startdate和Enddate是指所有者拥有对象的日期。
我要执行的查询应返回所有 ObjectId的位置,每个ObjectId都没有关联的记录,其中EndDate为null。即,返回当前没有所有者的所有对象。
类似
foreach(objectId in dbo.ObjectOwner)
if (
doesnotexist (records where ObjectId = objectid and EndDate is null)
)
{
add this objectid to the select table
}
我查看了分组依据,但是以下脚本返回了所有记录
SELECT oo.ObjectId
FROM dbo.ObjectOwner oo
GROUP BY oo.ObjectId
HAVING NOT EXISTS (
SELECT 1
FROM dbo.ObjectOwner
WHERE dbo.ObjectOwner.EndDate = null
)
预先感谢
答案 0 :(得分:2)
如果您写<...> = NULL则不起作用,因为NULL不能等于某个值。
canActivate() {
return this.authService.isAuthenticated()
.pipe(
mergeMap(authenticated => {
if (!authenticated) {
return throwError('not authenticated');
}
return this.userService.verifyUserSession().pipe(
mapTo(true)
);
}),
catchError(error => {
this.router.navigate(['auth/sign-in']);
return of(false);
})
);
}
答案 1 :(得分:2)
您可以使用GROUP BY
和HAVING
。由于NULL
的值未进行COUNT
编辑,因此以下操作有效:
SELECT ObjectId
FROM ObjectOwner
GROUP BY ObjectId
HAVING COUNT(*) = COUNT(EndDate)