SQL - 如何从 Mysql 中的另一个表插入附加到 Id 的新行

Posted

技术标签:

【中文标题】SQL - 如何从 Mysql 中的另一个表插入附加到 Id 的新行【英文标题】:SQL - how to insert new rows attached to Id from another table in Mysql 【发布时间】:2020-10-01 18:16:33 【问题描述】:

在这种情况下,我在 mysql DB 中有两个表。第一个是 User 实体,第二个实体是 Notification。这些实体在结构上是相关的。

通知实体如下所示:

id    newsletter    type     user_id
1         0         EMAIL        5
2         1         SMS          5
3         1         FACEBOOK     5
4         1         EMAIL        7
5         0         SMS          7
6         0         FACEBOOK     7

sql 语句应该如何为每个 user_id 插入新行

我尝试了类似的方法,或者首先从该表中获取所有用户,并为每个迭代和插入值。

INSERT INTO db.notification (newsletter, type, user_id) select true, 'GOOGLE', user_id  foreach existing user from db.notification 

所以输出看起来像:

id    newsletter    type     user_id
1         0         EMAIL        5
2         1         SMS          5
3         1         FACEBOOK     5
4         1         EMAIL        7
5         0         SMS          7
6         0         FACEBOOK     7
7         1         GOOGLE       5
8         1         GOOGLE       7

【问题讨论】:

【参考方案1】:

你可以使用insert . . . select:

INSERT INTO db.notification (newsletter, type, user_id)
    select distinct true, 'GOOGLE', user_id  
    from db.notification ;

【讨论】:

以上是关于SQL - 如何从 Mysql 中的另一个表插入附加到 Id 的新行的主要内容,如果未能解决你的问题,请参考以下文章

将数据行从 C# 中的另一个 sql 表插入到 sql 表中

是否可以从我的 MySQL 数据库中的一个表中的一行中获取一个值并插入到同一数据库中的另一个表中?

将用户服务的最后状态插入 SQL Server 中的另一个表

如何从 SQL 中的另一个表中获取计数?

如何将数据从一个表复制到 MySQL 中的另一个新表?

如果数据是从表中更新的,则应将数据插入到 SQL Server 2017 中的另一个表中