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

标签 mysql sql select insert

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

通知表

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

相关文章:

sql - 1052 : Column 'id' in field list is ambiguous

php - 存储注册时输入的数据

mysql - docker MySQL : Connecting a Rails app to MySQL

mysql - SQL 边界框优化

sql - 计算2个日期之间每个日期的记录数

php - 将表与子查询结果连接起来

sql - 在percent_rank()之后过滤Postgresql查询

mysql - 在 MySQL 中执行此 SELECT 的更好方法

MySQL插入语句(插入表(列)选择语句)

php - 如何在 Php Mysql 中使用 while 循环从下拉菜单中选择一个项目