从其他表中插入一些值

时间:2013-04-29 08:11:16

标签: mysql sql select insert

我有这两张桌子......

表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

1 个答案:

答案 0 :(得分:0)

如果您使用的是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;