首页 > 解决方案 > 只查找一条​​记录的分组查询(employee_id = 1 或 null)

问题描述

我的数据库信息是
在此处输入图像描述

如果employee_id 具有该记录的价值,我不会为每个工作日获取唯一记录,否则employee_id 为Null。我试试这个查询

SELECT 
  * 
FROM
  `calendar` 
WHERE `employee_id` = 1 
  OR `employee_id` IS NULL 
GROUP BY `weekday` 

结果是

在此处输入图像描述

但我期待

在此处输入图像描述

你能帮助我吗?谢谢

标签: mysqlsql

解决方案


试试这个:

SELECT 
  b.calendar_id,
  a.employee_id,
  a.weekday 
FROM
  (SELECT 
    `weekday`,
    MAX(employee_id) AS employee_id 
  FROM
    calendar 
  WHERE employee_id = 1 
    OR employee_id IS NULL 
  GROUP BY `weekday`) a 
  LEFT JOIN calendar b 
    ON a.weekday = b.weekday 
    AND a.employee_id = b.employee_id ;

如果有任何澄清,请告诉我。


推荐阅读