首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获得重复结果mysql查询

获得重复结果mysql查询
EN

Stack Overflow用户
提问于 2016-02-19 07:37:56
回答 1查看 58关注 0票数 0

这是我的查询

代码语言:javascript
复制
SELECT DISTINCT
    a.emp_id,
    a.shift_id,
    a.shift_start_date,
    DATE((b.shift_start_date) - INTERVAL 1 DAY) AS shift_end_date
FROM
    temp_shift a
        LEFT JOIN
    temp_shift b ON a.emp_id = b.emp_id
        AND a.shift_id != b.shift_id
        AND a.shift_start_date < b.shift_start_date
WHERE
    a.active = 'Y'
GROUP BY a.emp_id , a.shift_id , a.shift_start_date
ORDER BY a.emp_id , a.shift_start_date

我试着根据下一次换班时间来确定换班日期。我的成绩很好。但我的问题是我不希望结果像1,5,2-5,3-5,4-5,5-5,6-7(日期),应该是1-5,6-7(日期)。

查询和结果的屏幕截图

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-19 10:16:08

“但如何解决呢?”

代码语言:javascript
复制
DROP TABLE IF EXISTS t;
CREATE TABLE t(id INT);
INSERT INTO t VALUES(1),(2),(3),(4),(6),(7),(8); 

SELECT a.id start
     , MIN(c.id) end 
  FROM t a
  LEFT 
  JOIN t b 
    ON b.id = a.id - 1
  LEFT 
  JOIN t c 
    ON c.id >= a.id 
  LEFT 
  JOIN t d  
    ON d.id = c.id + 1
 WHERE b.id IS NULL 
   AND c.id IS NOT NULL
   AND d.id IS NULL
 GROUP 
    BY a.id; 
+-------+------+
| start | end  |
+-------+------+
|     1 |    4 |
|     6 |    8 |
+-------+------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35499886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档