sql 有两个字段开始时间,结束时间,两行交叉时间怎么合并
时间: 2023-11-14 22:13:57 浏览: 106
假设你有以下表结构:
```
CREATE TABLE time_periods (
id INT PRIMARY KEY,
start_time TIMESTAMP,
end_time TIMESTAMP
);
```
如果你想要合并两行交叉的时间段,可以使用以下 SQL 语句:
```
SELECT
t1.id,
LEAST(t1.start_time, t2.start_time) AS start_time,
GREATEST(t1.end_time, t2.end_time) AS end_time
FROM
time_periods t1
JOIN time_periods t2
ON t1.start_time <= t2.end_time
AND t1.end_time >= t2.start_time
AND t1.id <> t2.id;
```
这个 SQL 语句会将所有交叉的时间段合并成一个时间段,并返回一个新的结果集,每行包含合并后的时间段的开始时间和结束时间,以及原始时间段的 ID。
阅读全文