2016-11-23 72 views
1

我有数据库中的书和用户,用户表有book_ids。我想要得到的用户数属于每个book_id,但除了一个book_id所有其他book_ids我想排除具有4个域的电子邮件时计数用户。我怎样才能做到这一点。mySQL查询在选择计数时添加条件

SELECT count(id) as user_count ,book_id as booksFROM users WHERE auth= 5 AND (disabled=0 OR disabled IS NULL)AND (valid_to >= NOW() OR valid_to IS NULL) 
AND (email NOT LIKE \"%domain.com\" AND email NOT LIKE \"%abc.co\" AND book_id != 66) GROUP BY book_id 

上面是我的查询。这只返回除了66之外的book_id的所有用户数,但是我还希望为book_id 66计数,但是没有电子邮件检查。请指教

回答

1

继续与你同OR使用的逻辑:

SELECT count(id) as user_count, book_id as books 
FROM users 
    WHERE auth = 5 
    AND (disabled = 0 OR disabled IS NULL) 
    AND (valid_to >= NOW() OR valid_to IS NULL) 
    AND ((email NOT LIKE "%domain.com\" AND email NOT LIKE "%abc.co\") OR book_id = 66) 
GROUP BY book_id 
+0

((电子邮件NOT LIKE “%domain.com \” 及email NOT LIKE “%abc.co \”)此检查仅需要book_id!= 66,如果book_id = 66电子邮件检查没有必要,是否可以使用这个? –

+0

是@tharuerera – sagi

+0

它的工作原理。谢谢 –