MySQL插入固定值和多select结果的数据

2024-07-01

假设我有一个如下所示的表结构:

通知表

| 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(使用前将#替换为@)

MySQL插入固定值和多select结果的数据 的相关文章

随机推荐