如何选择条件行(另一个表中的多个记录)

时间:2015-10-19 06:36:22

标签: mysql

我有两张桌子。第一个表是一个表,其中包含描述id的id和属性,另一个表用于显示用户的活动。因此每个用户可能有一个或多个活动。

用户

user_id  server_id  user_name  user_email
00001    10         Tom        tom@email.com
00002    20         Bob        bob@email.com
00003    10         Sid        sid@email.com

user_activity

user_id  activity_id  activity_date
00001    1            2015-03-15
00002    4            2014-07-27
00001    3            2014-02-09
00003    5            2014-11-22
00003    4            2015-08-18

我想选择1000个用户,条件是user_activity表中必须有多行。

SELECT a.user_id, a.user_email FROM user a
INNER JOIN user_activity b ON a.user_id = b.user_id
WHERE a.server_id = 10
AND (user_id BETWEEN 1 AND 10000)
GROUP BY a.user_id 
HAVING COUNT(a.user_id > 1)
LIMIT 1000   

上面的查询为我提供了包含单行和多行的用户组合。我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

试试这个:

在子查询中,我应用COUNT来评估行是否超过1

SELECT a.user_id, a.user_email
FROM user a
WHERE (SELECT COUNT('ACTIVITY')
      FROM user_activity b
      WHERE a.user_id = b.user_id) > 1
AND a.server_id = 10
AND a.user_id BETWEEN 1 AND 10000
LIMIT 1000

答案 1 :(得分:0)

更改

HAVING COUNT(a.user_id > 1)

HAVING COUNT(a.user_id)>1

我认为它会提供所需的输出