mysql - 多行根据多个id插入到sql中

标签 mysql sql insert

我想为每个用户插入三个值或三行。我知道我可以使用以下查询

INSERT INTO subscriptions(id_account, subscription) 
SELECT id_account, 'subscriptionVAlue' FROM   unnest ('{123,456,789}'::int[]) id;

为列表中的每个 ID 插入一行。 但我想要的是这样的

INSERT INTO subscriptions (account_id, subscription, i18nkey) 
VALUES (id, 'subscription1', 'translation1')
VALUES (id, 'subscription2', 'translation2')
VALUES (id, 'subscription3', 'translation3')
where id in (123,1234,410,4512);

我知道这是一个糟糕的查询,但我想要类似的行为。这可能吗?

最佳答案

您可以使用交叉连接:

INSERT INTO subscriptions (account_id, subscription, i18nkey) 
    SELECT a.account_id, subscription, i18nkey
    FROM (SELECT 'subscription1' as subscription, 'translation1' as i18nkey UNION ALL
          SELECT 'subscription2', 'translation2' UNION ALL
          SELECT 'subscription3', 'translation3'
         ) x CROSS JOIN
         (SELECT 123 as account_id UNION ALL SELECT 1234 UNION ALL
          SELECT 410 UNION ALL SELECT 4512
         ) a;

unnest() 不是 MySQL 语法。您也可以使用 unnest() 做类似的事情。以上几乎适用于任何数据库,尽管您可能需要为子查询使用 FROM 子句(例如 FROM dual)。

关于mysql - 多行根据多个id插入到sql中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49981429/

相关文章:

android - 如何从edittext插入数据

sql - 如果剧集直接连续或重叠,则合并日期行

mysql - 在 MySQL 中添加两个没有公共(public)列的表

mysql - 在列中插入字符串,然后在另一列中分配关系

python - 将 Django CMS 集成到当前的 Django 项目中,但使用分离的两个数据库

mysql - 如何返回一个表中的所有结果以及另一个表中特定字段的计数?

php - PDO 未插入数据库

MySQL - 何时向用户表添加新行以及何时创建新表?

sql - 如何在 Rails 中创建 "Upcoming birthdays"模块?

javascript - 在node.js中从mysql接收数据绘制图形