如果mysql为Null,则获取包含计数的组名

如果mysql为Null,则获取包含计数的组名,mysql,Mysql,我正在尝试将状态计数获取为0,该计数不在表中: 我的表格: id | status | ---------------------- 1 Open 2 Closed 3 Closed 4 Open ---------------------- 预期结果: statusname | statuscount | --------------------------------- Ope

我正在尝试将状态计数获取为0,该计数不在表中:

我的表格:

id   |    status    |
----------------------
1         Open      
2         Closed    
3         Closed
4         Open
----------------------
预期结果:

statusname   |    statuscount   |
---------------------------------
Open              2
Closed            2
Cancelled         0
Rejected          0
---------------------------------
我试过:

SELECT COUNT(status), status FROM in_e_s_s__p_c_ns
WHERE status IN ("Open","Closed","Rejected","Cancelled") GROUP BY status

您需要有一个交付的表方法和一个左连接,这样才能工作

SELECT 
   status_records.status AS statusname
 , COUNT(*) AS statuscount   
FROM (

  SELECT 
   'Open' AS status
  UNION ALL
  SELECT 
   'Closed' AS status
  UNION ALL
  SELECT 
   'Rejected' AS status
  UNION ALL
  SELECT 
   'Cancelled' AS status
) AS status_records

LEFT JOIN 
 myTable
ON
 status_records.status = myTable.status
GROUP BY
 status_records.status

您是如何在预期输出中获得statusname“Cancelled”和“Rejected”的,这与示例数据有何关系?这里没有所谓的“取消”和“拒绝”。。或者“取消”和“拒绝”是由(“打开”、“关闭”、“拒绝”、“取消”)中的
生成的,这意味着它应该是动态的吗?我使用上述四种状态。如果表中不存在状态名称Cancelled and Rejected,则应将其视为0