簡體   English   中英

SQL--成對條件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM