我有这两张桌子...

表格1:

IDPlayer  int


表2:

ID_event int (Autoincrement - probably bad)
IDPlayer2  int
participate  bit


而且我有此命令,但我不知道,如何为1次插入操作是1个事件...

Insert into Table2 (ID_IDPlayer2)
Select Table1.IDPlayer
FROM Table1


输出:

event  player  participate
1   1   False
2   2   False
3   3   False
4   4   False
5   1   False
6   2   False
7   3   False
8   4   False


但是我想要这个:

event  player  participate
    1   1   False
    1   2   False
    1   3   False
    1   4   False
    2   1   False
    2   2   False
    2   3   False
    2   4   False

最佳答案

如果您使用的是SQL Server,

您可以继续使用自动递增,但您可能希望为“事件”列启用身份插入:

SET IDENTITY_INSERT Table2 ON;


之后,您可以将球员插入表2中的特定事件。
下一个句子会将所有玩家插入事件1:

Insert into Table2 (ID_event , ID_IDPlayer2)
Select 1, Table1.IDPlayer
FROM Table1


不过,我不会为此使用自动增量。我认为您应该保留第二个表来存储事件(EventsTable),并在其中保留自动增量,并使Table2.ID_Event成为对EventsTable.ID的引用(作为外键);

根据您的要求的解决方案是使用触发器。例:

CREATE TABLE Events (id INT); #Events table

CREATE TABLE Table2  (ID_event INT, IDPlayer2 INT); #Events and player relation table

CREATE TABLE Table1  (IDPlayer2 INT); #Players table
INSERT INTO Table1 VALUES (1);
INSERT INTO Table1 VALUES (2);
INSERT INTO Table1 VALUES (3);
INSERT INTO Table1 VALUES (4);


CREATE TRIGGER NewEvent ON Events AFTER INSERT AS
BEGIN
    INSERT INTO Table2 SELECT inserted.id, IDPlayer2 FROM Table1, inserted;
END

INSERT INTO Events VALUES (1001);
INSERT INTO Events VALUES (1002);

SELECT * FROM Table2;

关于mysql - 从其他表插入一些值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16273960/

10-14 13:07
查看更多