[英]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.