我有一个用户表:
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 ...
可能有更多的方法可以做到这一点。