【问题标题】:SQL Query Help: select random employee of the monthSQL 查询帮助:选择当月的随机员工
【发布时间】:2009-05-07 01:55:06
【问题描述】:

谁能告诉我如何从这个语句中获取记录

  • 随机选择最近 x 个月内不是当月员工的员工

表员工
身份证
员工姓名

表 EmployeeOfTheMonth
身份证
员工ID
月开始日期
MonthEndedDate

非常感谢

【问题讨论】:

  • 参见petefreitag.com/item/466.cfm 选择随机行。
  • 使用 Linq? (基于您的标签)
  • 本月最佳员工是您公司的 RANDOM?大声笑
  • @Deviant 哈哈,应该让每个人都开心;)

标签: sql linq random query-optimization


【解决方案1】:
select top 1 id from employee as emp 
where not exist(
    select top 1 * 
      from employeeofthemonth as em 
      where em.id = emp.id and dateadd(m, -6, getdate()) < monthendeddt )
order by newid()

...或类似的东西。我没有运行 sql,但是在 mssql 服务器上,这应该是正确的。

【讨论】:

  • 好像他想要 Linq 的东西。
  • 这个查询对性能有什么影响?随着记录数量的增加,它似乎会成为一个瓶颈。
【解决方案2】:

修改最后一个答案,我更喜欢用 IN 语句


DECLARE @xMonth INT
SET @xMonth = 3

SELECT TOP 1 ID FROM Employee WHERE ID NOT IN (SELECT EmployeeID FROM EmployeeOfTheMonth WHERE DATEADD(m, -@xMonth, GETDATE()) < MonthEndedDate) ORDER BY NEWID()

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 2011-05-14
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    相关资源
    最近更新 更多