这是我的第一个问题。我整整都试图解决这个问题而没有成功。
我有下表
ID F1 F2
1 1 10
2 3 5
3 2 8
4 7 10
5 11 20
6 12 18
7 15 20
请注意,行2,3,4的值介于第一行的值之间。
然后,第6行和第7行位于第5行的值之间
我需要创建一个只能为我带来第1行和第5行的查询。
我尝试了很多种查询但没有成功。
我期待以下查询可以工作(在许多其他查询中),但事实并非如此。
select OL.F1,OL.F2
from borrar OL,
(select F1,F2
from borrar
) IL
where
OL.F1 >= IL.F1
and OL.F2 <= IL.F2
任何想法?。
谢谢,
答案 0 :(得分:1)
您可以通过自我加入来完成此操作。使第1行和第5行与其他行不同的是,表中没有行,其中F1小于行1&amp; 5的F1值,F2大于行1&amp; 5&#39;为F2的值。
SELECT t1.*
FROM datatable t1
LEFT OUTER JOIN datatable t2
on t2.F1<=t1.F1 and t2.F2>=t1.F2 and t1.id<>t2.id
WHERE t2.ID is NULL
自我加入总是有点令人困惑。每行与所有其他行组合以查找是否有其他行&#34;跨越&#34;它(即F1和F2等于或超出它)但需要排除跨越自身的行。使用外连接,并搜索NULL以查找没有匹配的行。
答案 1 :(得分:0)
这似乎是一个家庭作业问题......
但是,有一点我注意到两种情况下F2-F1 = 9。也许在Where子句中使用它可以解决问题;)