如何相交两个并集查询

香卡

您好,我有两个查询

一个是

SELECT userid_one AS id FROM `friends` WHERE `userid_two` = '$UserId' AND `requeststatus` ='accepted'
                    UNION 
SELECT userid_two AS id FROM `friends` WHERE  `userid_one` =  '$UserId' AND `requeststatus` ='accepted'

它给了我用户ID 41,38,61,62,64

第二个是

SELECT DISTINCT  `userid` FROM  `groupmembers` WHERE  `groupid` =24

它给了我61,49,62

我想要结果用户ID不在两个结果中即:49,41,38,64,38

我怎样才能做到这一点

约法卜

就拿UNION ALL第一个结果(带有加入),二结果之间。这样重复的值将持续存在。现在使用GROUP BY查找非重复ids

SELECT id from 
       ( SELECT userid_one AS id FROM `friends` 
         WHERE `userid_two` = '$UserId' AND `requeststatus` ='accepted'

         UNION 

        SELECT userid_two AS id FROM `friends` 
        WHERE  `userid_one` =  '$UserId' AND `requeststatus` ='accepted'

        UNION ALL

        SELECT DISTINCT  `userid`  AS id FROM  `groupmembers` WHERE  `groupid` =24
       ) A

        GROUP BY id having COUNT(1)=1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章