MYSQL QUERY获取多条记录

时间:2013-11-19 07:38:54

标签: mysql sql

我的查询有问题..

SELECT av.A,
       ad.* 
FROM ads ad 
     RIGHT JOIN `B` av  
     ON ad.serial =  av.adid
WHERE ad.status='1' 
      AND  EXISTS (SELECT  * 
                   FROM attvalues 
                   WHERE adid =ad.serial 
                         AND (av.atrid = '104'  
                              AND av.atrid = '98'))

我想要检索哪个匹配条件104和98.我可以使用OR但它只匹配1个条件

如果这种方式不正确,您也可以给我替代查询。

1 个答案:

答案 0 :(得分:0)

我假设您要检索记录,其中包含atrid 104的记录和atrid 98的记录。在这种情况下,你想要所有的记录都有98或104,而且必须有2个,所以我建议使用group by和count(*)。请注意,我也假设您的atrid是attvalues,因为我无法想到以其他方式使WHERE语句工作,您无法选择B中某些值具有任何值的attvalues ...

SELECT av.A,
       ad.* 
FROM ads ad 
     RIGHT JOIN `B` av  
     ON ad.serial =  av.adid
WHERE ad.status='1' 
      AND  EXISTS (SELECT  X.adid
                     FROM attvalues X
                    WHERE X.adid =ad.serial 
                      AND (X.atrid = '104' OR X.atrid = '98')
                     GROUP BY X.adid
                      HAVING COUNT(*) = 2)