为多个ID插入多个数据集

时间:2014-08-18 16:19:27

标签: mysql sql

我有一个用户表:

UserID    | User
1           Martin
2           Lilian
3           Oliver

现在我有另一张桌子:

dataID | UserID | key | value

现在我需要做的是:

从用户表中选择某些用户,并在数据表中插入几个recrods:

我需要结合这两个查询:

INSERT INTO `data` (`UserID`, `key`, `value`)
VALUES (HERE_ID_OF_USER, 'someKey', 10),
VALUES (HERE_ID_OF_USER, 'otherKey', 20)

SELECT `UserID` FROM `users` WHERE ...

2 个答案:

答案 0 :(得分:1)

我不确定我完全明白你想做什么,但我认为你想要这个:

INSERT INTO data (UserID,key,value) SELECT UserID,'somekey',10 FROM users WHERE ...
INSERT INTO data (UserID,key,value) SELECT UserID,'otherkey',20 FROM users WHERE ...

如果这不是你想要的,你需要更明确一点......

<强>更新

如果您已经为表中的每个用户插入了数据,则可以使用:

INSERT INTO data (UserID,key,value)
    SELECT u.UserID,dd.key,dd.value FROM users u,default_data dd WHERE ...

如果您不这样做(并且不想将其存储在表格中),您可以使用;

INSERT INTO data (UserID,key,value)
    SELECT UserID,'some key',10 FROM users WHERE ...
    UNION ALL
    SELECT UserID,'other key',20 FROM users WHERE ...

或(为了避免重复WHERE条款):

INSERT INTO data (UserId,key,value)
    SELECT u.UserID,dd.key,dd.value
        FROM users u,
            (
                SELECT 'some key' AS key,10 AS data
                UNION ALL
                SELECT 'other key',20
            ) dd
        WHERE ...

可能有更多方法可以做到。

答案 1 :(得分:0)

构建您的选择查询以根据用户ID连接从2表中获取数据。然后将结果集插入到所需的表中。

INSERT INTO DATA(SELECT A.USER_ID,B.KEY,B.VALUE from USERS A,SECOND_TABLE B WHERE A.USER_ID = B.USER_ID AND A.USER_ID in(.....))