【发布时间】:2022-01-10 05:21:55
【问题描述】:
我在 SQL Server 中有一个存储地毯的表。每个都有自己的 ID,以及以米为单位(从到到)的范围和颜色。
CREATE TABLE rugs (
[code] VARCHAR (10),
[from] INT,
[to] INT,
[color] VARCHAR (10)
);
INSERT INTO rugs VALUES ('RUG001', 0, 1, 'Yellow');
INSERT INTO rugs VALUES ('RUG001', 1, 2, 'Red');
INSERT INTO rugs VALUES ('RUG001', 2, 4, 'Blue');
INSERT INTO rugs VALUES ('RUG001', 3, 5, 'Green');
INSERT INTO rugs VALUES ('RUG002', 0, 1, 'Purple');
INSERT INTO rugs VALUES ('RUG002', 1, 2, 'Orange');
在此示例中,它在对应于地毯 RUG001 的蓝色和绿色的行中重叠。 RUG002 没问题。
如何检查同一张地毯是否有重叠的间隔?
我尝试了什么(但它不起作用)
Select * from RUGS as R1
INNER JOIN RUGS as R2
ON R1.CODE = R2.CODE
WHERE
R1.[FROM] <= R2.[TO] AND R1.[TO] >= R2.[FROM]
【问题讨论】:
-
..
WHERE R1.[from] < R2.[to] AND R1.[to] > R2.[from] and not(R1.[from] = R2.[from] and R1.[to] = R2.[to] and R1.color = R2.color)
标签: sql sql-server tsql