2

我需要从表“Employees”的“EmployeeID”列中收集值,并将它们插入到“Incident”表的“EmployeeID”列中。最后,“EmployeeID”列的行中的值应随机排列。

更确切地说; 我用他们的 ID 创建了 10 名员工,从 1 数到 10。这些员工,实际上是 ID,应该接收随机事件来处理。所以……有 10 个 ID 可以传播到所有事件上——可能是 1000 个。

我该怎么做呢?

这只是在本地机器上进行个人锻炼。我用谷歌搜索,但没有找到我的问题的明确答案。

应该很容易为您解决冠军。:) 有人可以帮助我吗?


笔记:

1) 我已经在“事件”表中创建了一个名为“EmployeeID”的列,因此我需要一个更新语句,不是吗?

2) 架构:

[dbo].[EmployeeType]
[dbo].[Company]
[dbo].[Division]
[dbo].[Team]
[dbo].[sysdiagrams]
[dbo].[Incident]
[dbo].[Employees]

3) 1. 预解决方案:

CREATE TABLE IncidentToEmployee
(
IncidentToEmployeeID    BIGINT  IDENTITY(1,1)   NOT NULL,
EmployeeID              BIGINT                  NULL,
Incident                FLOAT                   NULL
PRIMARY KEY CLUSTERED (IncidentToEmployeeID)
)

INSERT  INTO IncidentToEmployee
        SELECT
                EmployeeID,
                Incident
        FROM    dbo.Employees,
                dbo.Incident
        ORDER BY NEWID()

SELECT * FROM IncidentToEmployee

GO

3) 2. INNER JOIN ON 输出

如果您想知道“别名”列;没有人真正知道 ID 背后有哪些人——这就是我使用别名列的原因。

SELECT      Employees.Alias,
            IncidentToEmployee.Incident
FROM        Employees
                        INNER JOIN
                                    IncidentToEmployee     ON
                                    Employees.EmployeeID = IncidentToEmployee.EmployeeID
ORDER BY Alias

4) 最终解决方案

正如我所提到的,我首先在“事件”表中添加了一个名为“EmployeeID”的列。这就是为什么我一开始不能使用 INSERT INTO 语句而不得不使用 UPDATE 语句的原因。我现在找到了最合适的解决方案 - 没有像我作为预解决方案那样创建新表。看看下面的代码:

ALTER Table Incident
ADD EmployeeID  BIGINT  NULL

UPDATE Incident
SET Incident.EmployeeID = EmployeeID
FROM Incident INNER JOIN Employees
ON Incident = EmployeeID

        SELECT
                EmployeeID,
                Incident
        FROM    dbo.Employees,
                dbo.Incident
        ORDER BY NEWID()

谢谢大家的帮助 - 我认为需要更长的时间才能找到解决方案;但我终于成功了。谢谢!

4

2 回答 2

0

手写,因此可能需要调整语法,但应该这样做。除非播种,否则 Rand() 函数将给出相同的值,因此您可以使用诸如日期之类的内容来查看随机性。

Insert Into Incidents
Select Top 10 
  EmployeeID
From Employees
Order By
  Rand(GetDate())
于 2013-10-25T11:59:54.827 回答
0

更新

我认为您需要为不同的用户分配不同的任务,更好的方法是创建一个新表,假设EmployeeIncidents具有列 Id(primary) 、 EmployeeID 和 IncidentID 。

现在您可以将随机EmployeesID 和随机IncidentID 插入到新表中,这样您也可以保留记录,更新Incident 表将不是一个明智的选择。

INSERT  INTO EmployeeIncidents
        SELECT TOP ( 10 )
                EmployeesID ,
                IncidentID 
        FROM    dbo.Employees,
                dbo.Incident
        ORDER BY NEWID()
于 2013-10-25T13:34:11.087 回答