mySQL:批量插入搜索结果中的记录

时间:2012-04-14 21:38:54

标签: mysql

我有一个记录订阅者邮件列表订阅的表。

CREATE TABLE IF NOT EXISTS `subscriber_list` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `subscriber_id` int(11) NOT NULL,
  `account_id` int(11) NOT NULL,
  `list_id` int(11) NOT NULL,
  `date_entered_gmt` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `subscriber_id_account_id_list_id` (`subscriber_id`,`account_id`,`list_id`),
  KEY `list_id_account_id` (`list_id`,`account_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1454722 ;

在使用该表的应用程序中,有一个功能允许邮件列表中的所有订阅者订阅另一个订阅者。

我打算使用子查询来获取邮件列表的所有当前订阅者,这些订阅者将订阅新选择的邮件列表,并且这些订阅者列表如何为每个定义新订阅的订阅者插入新的邮件列表记录但邮件列表最多可以达到250,000个订阅者,所以我不确定应该怎么做。

干杯

马克

1 个答案:

答案 0 :(得分:2)

您可以使用INSERT ... SELECT这样的东西 -

INSERT INTO subscriber_list (subscriber_id, account_id, list_id, date_entered_gmt)
SELECT subscriber_id, account_id, 4, NOW()
FROM subscriber_list
WHERE list_id = 3

为了回应您的评论,我更新了此查询中的值。这将 -

SELECT subscriber_id, account_id, 4, NOW()
FROM subscriber_list
WHERE list_id = 3

并将它们直接插入订户列表表中。因此,如果SELECT中的值是您要插入的值,那么这将适合您的场景。