假设我有一个如下所示的表结构:
通知表
| id | receiver_id | type | content | time |
接收者 ID 来自用户表:
用户表
| id | username |
内容和时间来自广播表:
广播表
| id | content | time |
因此,当我需要插入到这个通知表中时,我需要从用户中选择id并从广播中选择内容+时间,并且类型固定为“system_broadcast”。我可以在一个查询中完成此操作吗?
I tried
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 . . . select
。这似乎符合您最初查询的意图:
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
仅获取特定行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)