Sql 我如何找出具有特定角色ID且';在某个时间间隔内未激活?
下面的查询将告诉我在一段时间内有多少非活动用户Sql 我如何找出具有特定角色ID且';在某个时间间隔内未激活?,sql,sql-server,tsql,Sql,Sql Server,Tsql,下面的查询将告诉我在一段时间内有多少非活动用户 USE Database SELECT u.* FROM [dbo].[tbl_Users] u WHERE NOT EXISTS (SELECT 1 FROM [dbo].[CaseTable] ct WHERE c.tUserID = u.UserID AND ct.CreationDate between '2019-01-01' and '2019-12-31'
USE Database
SELECT u.*
FROM [dbo].[tbl_Users] u
WHERE NOT EXISTS (SELECT 1
FROM [dbo].[CaseTable] ct
WHERE c.tUserID = u.UserID AND ct.CreationDate between '2019-01-01' and '2019-12-31'
);
下面的查询将告诉我哪些用户具有我要查找的特定角色id
Use Database;
SELECT UserID, DepartmentID, RoleId
FROM tbl_UsersBelongsTo
WHERE RoleID=6
如何集成这两个查询并从本质上获得我想要的?我想它是带有一个
连接
子句的,但是如何使用呢???请尝试使用如下的内部连接:
SELECT u.*
FROM [dbo].[tbl_Users] u
INNER JOIN
(
SELECT UserID
FROM tbl_UsersBelongsTo
WHERE RoleID=6
) x ON u.UserID = x.UserID
WHERE NOT EXISTS (SELECT 1
FROM [dbo].[CaseTable] ct
WHERE c.tUserID = u.UserID AND ct.CreationDate between '2019-01-01' and '2019-12-31'
);
我想您只想加入
或其他存在
:
SELECT u.*
FROM [dbo].[tbl_Users] u
WHERE NOT EXISTS (SELECT 1
FROM [dbo].[CaseTable] ct
WHERE ct.tUserID = u.UserID AND
ct.CreationDate between '2019-01-01' and '2019-12-31'
) AND
EXISTS (SELECT 1
FROM tbl_UsersBelongsTo ubt
WHERE ubt.RoleID = 6 AND ubt.userId = u.userId
);
您可以阅读有关联接的更多信息
如果我理解正确-您使用的是两个不同的数据库,第二个数据库的名称是pisacara
。只要SQL Server中的不同数据库位于同一台服务器上,并且您对这两个数据库使用相同的凭据,就可以连接这些数据库中的表
假设tbl_Users
表也有一个UserID
字段,则查询如下所示:
SELECT u.*
FROM [1st_database_name].[dbo].[tbl_Users] u
INNER JOIN [piscara].[dbo].[tbl_UsersBelongsTo] a
ON u.UserID = a.UserID
WHERE NOT EXISTS (SELECT 1
FROM [1st_database_name].[dbo].[CaseTable] ct
WHERE c.tUserID = u.UserID
AND ct.CreationDate BETWEEN'2019-01-01' AND'2019-12-31'
)
AND a.RoleID=6;
您还可以尝试将第二个查询作为子查询放入WHERE
子句中,如下所示:
SELECT u.*
FROM [1st_database_name].[dbo].[tbl_Users] u
WHERE NOT EXISTS (SELECT 1
FROM [1st_database_name].[dbo].[CaseTable] ct
WHERE c.tUserID = u.UserID
AND ct.CreationDate BETWEEN'2019-01-01' AND'2019-12-31'
)
AND u.UserID IN (SELECT UserID
FROM [piscara].[dbo].[tbl_UsersBelongsTo]
WHERE RoleID=6);
样本数据和预期结果将有所帮助。