假设我有一个如下所示的表结构:
通知表
| id | receiver_id | type | content | time |
接收者 ID 来自用户表:
用户表
| id | username |
内容和时间来自广播表:
广播表
| id | content | time |
所以当我需要插入到这个通知表中时,我需要从用户中选择id并从广播中选择内容+时间,并且类型固定为“system_broadcast”。我可以在一个查询中完成此操作吗?
我试过了
INSERT INTO notification_table (receiver_id, type, content, time)
VALUES (
(SELECT id FROM user_table WHERE username='test' LIMIT 1),
'system_broadcast',
(SELECT content, time FROM broadcast_table)
)
但它返回错误,如“mysql 操作数应包含 1 列”。
最佳答案
是的,您可以使用 insert 来完成此操作。 。 。选择
。这似乎符合您原始查询的意图:
INSERT INTO notification_table (receiver_id, type, content, time)
SELECT (SELECT id FROM user_table WHERE username = 'test' LIMIT 1),
'system_broadcast',
content, time
FROM broadcast_table;
请注意,这将为 broadcast_table
中的每一行插入一行。您可能需要 where
子句或 limit
来仅获取特定行。
关于MySQL插入固定值和多select结果的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27888003/