我有两张桌子:
**Users**
UserID | UserName | Password
**Task**
TaskId | Hours | UserID (Empty as of now)
我需要UserID
在任务表中分配任务,以便所有用户获得偶数小时的任务。我在数据库中有大约 5000 个任务,Hours
列值范围从 1 到 30。
如何使用 SQL Server 查询或 LINQ 来完成?
我有两张桌子:
**Users**
UserID | UserName | Password
**Task**
TaskId | Hours | UserID (Empty as of now)
我需要UserID
在任务表中分配任务,以便所有用户获得偶数小时的任务。我在数据库中有大约 5000 个任务,Hours
列值范围从 1 到 30。
如何使用 SQL Server 查询或 LINQ 来完成?
这听起来像是分区问题(请参阅此处),您尝试分配任务以使每个用户的小时数总和相同。
在某些情况下,问题很容易解决(例如,如果所有任务的长度为 1 小时)。在其他情况下,问题没有解决方案(例如,如果用户多于任务)。作为提示,当一个问题有如此极端的变化时,它可能无法通过使用 SQL 查询来解决。
当然,您可以在表格中表示数据。并且,您可以在某些逻辑复杂的查询上使用游标,并调用此 SQL。
维基百科页面描述了几种不同的可能算法。祝你好运。