我有以下 SQL 语句来返回特定模块的行存在日期冲突的行:
SELECT e1.[id], e1.[start], e1.[end], e2.[id] AS Expr1, e2.[start] AS Expr2, e2.[end] AS Expr3
FROM ClassTimes AS e1
INNER JOIN ClassTimes AS e2 ON e1.[id] < e2.[id]
WHERE (e1.[start] BETWEEN e2.[start] AND e2.[end])
AND (e1.[module] = @module)
AND (e2.[module] = @module)
OR (e1.[module] = @module)
AND (e2.[module] = @module)
AND (e1.[end] BETWEEN e2.[start] AND e2.[end])
对于某些冲突,这很有效,例如我的数据库中将返回的以下行:
id| start | end | module
----------------------------------------------------
1 | 30/02/2016 10:00 | 30/02/2016 11:00 | 1
2 | 30/02/2016 10:30 | 30/02/2016 11:30 | 1
但是我遇到的问题是,当我有一行的起始值是另一行的等效结束值时。我在下面显示了 30/02/2016 13:00 的值。
id| start | end | module
----------------------------------------------------
3 | 30/02/2016 12:00 | 30/02/2016 13:00 | 1
4 | 30/02/2016 13:00 | 30/02/2016 14:00 | 1
如何修改我的 sql 语句以消除返回这些端点的行?