【问题标题】:How to select row with conditions (multiple records in another table)如何选择有条件的行(另一个表中的多条记录)
【发布时间】:2015-10-19 06:36:21
【问题描述】:

我有两张桌子。第一个表是一个带有 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_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   

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

【问题讨论】:

    标签: mysql


    【解决方案1】:

    改变

    HAVING COUNT(a.user_id > 1)
    

    HAVING COUNT(a.user_id)>1
    

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

    【讨论】:

    • 谢谢!所以这是我的语法错误......我一定忽略了括号。我测试了几行,到目前为止看起来不错。
    【解决方案2】:

    试试这个:

    在子查询中,我应用了一个 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-07
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      相关资源
      最近更新 更多