【问题标题】:mysql getting where clause weather the count is 0 or notmysql获取where子句天气计数是否为0
【发布时间】:2020-07-17 16:38:20
【问题描述】:

无论 Meeting_Count 是 0 还是有值,我都想在 User_ID 列中显示assigned_user_id。

通过以下查询,我得到的只是

+---------+---------------+
| User_ID | Meeting_Count |
+---------+---------------+
| NULL    |             0 |
+---------+---------------+
SELECT
meeting.assigned_user_id AS User_ID,
COUNT(*) AS Meeting_Count
FROM meeting
WHERE meeting.assigned_user_id = '5c3e31bb4b708eeb5'
AND meeting.date_start >= NOW() - INTERVAL 60 DAY

我的要求就是这样,

+-------------------+---------------+
| User_ID           | Meeting_Count |
+-------------------+---------------+
| 5c3e31bb4b708eeb5 |            0  |
+-------------------+---------------+

谁能帮我解决这个问题。我还是个学习者。

【问题讨论】:

  • 你能提供一些你的会议桌的样本数据吗

标签: mysql database group-by count


【解决方案1】:

where 子句过滤掉不属于给定用户的行,如果没有任何行匹配,则结果集为空。一种解决方法是在条件表达式中移动过滤。在 MySQL 中,您可以这样表述:

select
    '5c3e31bb4b708eeb5' as user_id,
    sum(assigned_user_id = '5c3e31bb4b708eeb5') as meeting_count
from meeting
where date_start >= now() - interval 60 day

如果表有可能在过去 60 天内不包含任何行,并且在这种情况下您仍需要结果,那么您可以进一步将日期过滤移至 sum()

select
    '5c3e31bb4b708eeb5' as user_id,
    sum(assigned_user_id = '5c3e31bb4b708eeb5' and date_start >= now() - interval 60 day) as meeting_count
from meeting

这是保证总是返回一行。

需要注意的是,条件聚合本质上不如使用where 子句进行过滤。

【讨论】:

  • 您好专线小巴,谢谢。它的工作。如果我想显示更多 10 个assigned_user_id 信息怎么办?怎么可以添加到这个?请h l p
  • @Nishan:这是一个完全不同的问题,您应该在new question...中提供样本数据和所需结果。
  • 会的。感谢您的支持!
猜你喜欢
  • 2014-10-12
  • 2019-08-01
  • 1970-01-01
  • 2019-05-14
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多