2015-12-21 73 views
0

这个查询:使用MYSQL其他表

SELECT 
user_id, 
count(base_item) 
FROM items 
WHERE base_item = '202' 
group by user_id order by count(base_item) 

给了我这样的结果:

enter image description here

这是我想要的。 不过,我也希望它排除所有用户id S IN的users表5或更高的rank。如下图所示

enter image description here

回答

0

修改您的where条款是这样的:

WHERE base_item = '202' AND user_id NOT IN (SELECT id FROM users WHERE rank > 5) 

括号中的部分被称为子查询。子查询的结果集包含排名大于5的所有用户的标识。对where子句的添加不包括该结果集中的所有用户。

+0

的感谢!奇迹般有效! – omarisgod

+0

很高兴听到。并感谢您接受答案。注意它是另一种表达方式,表明您发现它是一个有用的答案;)谢谢! – Redbeard011010

0

加入与users表,并与高级别过滤掉行

SELECT user_id, count(*) AS count 
FROM items AS i 
JOIN users AS u ON i.user_id = u.id 
WHERE i.base_item = '202' 
AND u.rank <= 5 
group by user_id 
order by count