我有一个用户表:

UserID    | User
1           Martin
2           Lilian
3           Oliver


现在我有另一个表:

dataID | UserID | key | value


现在我需要做的是:

从用户表中选择某些用户,然后在数据表中插入几个提示:

我需要结合这两个查询:

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 ...

最佳答案

不确定我是否完全了解您想要做什么,但是我假设您想要这样做:

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 ...


可能有更多的方法可以做到这一点。

10-01 16:31
查看更多