繁体   English   中英

同一表中的MySQL子查询

[英]MySQL Subquery in the same table

这是我的第一个问题。 我试图整周处理这个问题,但没有成功。

我有下表

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

有任何想法吗?。

谢谢,

您可以通过自我联接来做到这一点。 使行1和5与其他行不同的是,表中没有行F1小于F1的行1&5的值,而F2大于F2的行1&5的值。

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

自联接总是有点​​混乱。 每行与所有其他行组合在一起,以查找是否有其他行“跨越”它(即F1和F2等于或在其外部),但需要排除跨越自身的行。 使用外部联接,并搜索NULL来查找没有匹配项的行。

这似乎是一个作业问题...

但是,我注意到的一件事是,两种情况下F2-F1 = 9。 也许在Where子句中使用该技巧就可以了;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM