我有两张桌子。第一个表是一个表,其中包含描述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
上面的查询为我提供了包含单行和多行的用户组合。我在这里做错了什么?
答案 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
我认为它会提供所需的输出