[英]SQL--Pairwise condition
SQL 在 WHERE 子句中是否有任何不使用 IN 的成對條件? 我的用例是我有兩個表:表 ABC 中的 (Date, ID) 和表 XYZ 中的 (LaunchDate, ID)。 我的條件是 ABC.ID 在 XYZ.ID 和 ABC.Date>=XYZ.LaunchDate (對應的 ID)。 但是,如果我在 ABC 中有 (3/5, 1) 並且在 XYZ 中有 (3/4, 1),那么成對的 IN 將不起作用,因為 (3/5, 1) 不在 XYZ 中?
我現在擁有的:
select date,ID
from ABC where (date,ID) in (select LaunchDate, ID
from XYZ
where date>=LaunchDate)
你似乎想要exists
:
where exists (select 1
from xyz
where xyz.id = abc.id and abc.date >= xyz.lunchdate
)
一般來說,我建議exists
無論如何in
使用子查詢,因為exists
通常更容易優化(盡管有些數據庫在 中優化in
很好)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.