插入到另一个表中的所有用户

时间:2014-06-21 18:49:35

标签: mysql sql pdo

我有2个表(通知和以下)。我想为所有关注此页面的用户添加通知。对于只有一个用户我喜欢这个:

INSERT INTO notifications ( from_id , to_id , type, checked, page_id ) VALUES ( :from_id , :to_id , :type, :checked, :page_id)

我想做同样的事情,但对于跟随同一页面的所有用户。 重点:page_id指向页面,to_id指向用户。

CREATE TABLE IF NOT EXISTS `notifications` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`from_id` int(11) NOT NULL,
`to_id` int(11) NOT NULL,
`page_id` int(11) NOT NULL,
`type` int(11) NOT NULL,
`checked` tinyint(1) NOT NULL,
`created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=122 ;

 -----

CREATE TABLE IF NOT EXISTS `following` (
`following_id` int(11) NOT NULL AUTO_INCREMENT,
`page_id` int(11) NOT NULL,
`follower_id` int(11) NOT NULL,
`accepted` tinyint(1) NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (`following_id`),
 UNIQUE KEY `id` (`following_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=82 ;

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

使用insert . . . select语法从同一个表中插入多行。我不确定你想从哪里找到哪些列,但这是方法:

INSERT INTO notifications(from_id, to_id, type, checked, page_id) 
    select f.follower_id, :to_id, :type, :checked, f.page_id
    from following f
    where f.page_id = :page_id;