簡體   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