MySQL子查询在同一个表中

时间:2015-03-13 03:17:10

标签: mysql sql

这是我的第一个问题。我整整都试图解决这个问题而没有成功。

我有下表

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

任何想法?。

谢谢,

2 个答案:

答案 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子句中使用它可以解决问题;)