这在标题中解释相当复杂。SQL Server:选择TOP Records并在另一个表中更新结果
我有两个表,一个填充用户的Web访问,另一个是具有存储最后登录日期的字段的用户表。 。
我想每个用户基础上的最新用户访问是否是上次登录的日期(如果它们在user表中登记的
这将是用户在存储过程中
注:我已略表的相关列。
表[Login]
[User] [VARCHAR](15) NOT NULL,
[LogOn_Date] [DATETIME] NOT NULL
和
表[Users]
[User] [varchar](15) NOT NULL,
[Last_Login_Dt] [datetime] NULL
我期待从Login
表中的每个用户选择的最晚日期[LogOn_Date]
,然后在[Last_Login_Dt]
列匹配用户[LogOn_Date]
值更新Users
表。
注意:并非所有登录的用户都在Users
表中,我通过Windows身份验证跟踪每个人,不管他们是否是用户,但只想更新users
表中存在的每个用户。
谢谢!
Users.User'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。我不希望在用户表中使用该列,但之后的存储过程会禁用用户帐户(如果它们在X天内未处于活动状态)。我们失去了我们的整个数据库团队,.NET开发人员坚持不懈。 –
@MichaelHartmann你只需要在查询结尾添加Group By U.User',但我必须同意根据上面的注释,你不需要更新表来存储只用于一个停用用户的过程。更新,然后检查Last_Login_Dt字段将花费更多的时间,而不仅仅是取消激活查询中的MAX(LogOn_Date)。 – JamieD77
Joe的看法很有效,并且按照你的建议,这将是理想的做法,但是,我不知道如何将视图与禁用用户的SP相结合。我们所有的SQL员工都被移走了,离开了.NET开发人员。 @ jamieD77 –