根据一个条件获取不在同一个表中的记录

时间:2012-07-23 08:49:28

标签: mysql join

我希望获得订阅一个帖子但其他类型的用户的ID。

请查看下表

表:订阅者

userid  post_id  notification_made
33      780          2
35      780          2
29      780          2
33      780          1
35      780          1

在上面的图片中,在插入最后2条记录时,我使用insert query添加33和35,其中notification_made = 1.这里我想获取此表中具有相同post_id的用户的ID(780)但是那些不在同一个notification_id(1)下。所以我需要29个Userid,它位于相同的post_id下但不在同一个notification_made下。

请帮忙!

提前致谢。

1 个答案:

答案 0 :(得分:1)

考虑到您有三个参数(两个用户ID和一个通知模式),并且您想要插入,您可以尝试:

INSERT INTO subscribers
SELECT DISTINCT a.userid, a.post_id, 1
FROM subscribers a
INNER JOIN
(
    SELECT post_id
    FROM subscribers
    WHERE userid IN (33,35) AND notification_made = 1
    GROUP BY post_id
    HAVING COUNT(*) = 2
) b ON a.post_id = b.post_id
WHERE a.userid NOT IN (33,35) AND a.notification_made <> 1