0

サブスクライバーのメーリング リストのサブスクリプションを記録するテーブルがあります。

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 人の購読者に達する可能性があるため、これをどのように行うべきかわかりません。

乾杯

マルク

4

1 に答える 1

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 の値が挿入したい値である場合、これはシナリオに適しています。

于 2012-04-14T21:51:32.133 に答える