2010-09-27 56 views
0

我有以下情况。我有一个关于多个合同的交易数据库。我正在寻找第一个交易,其中alphaBound和合约有一个未来,这意味着在同一合约ID的日期之后有记录。要做到这一点,我一直在做:mysql选择有条件存在未来记录

select transactionID, 
     date, 
     alpha, 
     contractID 
    from myDB 
where date >= '2000-01-01' 
    and alpha < alphaBound 

,然后遍历结果如下

for(i in 1:length(resultSet)) { 
    date.tmp = resultSet[i, date] 
    contractID.tmp = resultSet[i, contractID] 

    future = doQuery("select * from myDB where date > " + date.tmp + " AND contractID = " + contractID.tmp) 

    if(future is not empty) { 
     # break! Found the entry I wanted 
    } 

} 

我怎么能在1个查询做到这一点?谢谢。

回答

3

用途:

SELECT t.transactionid, 
     t.date, 
     t.alpha, 
     t.contractid 
    FROM mydb t 
WHERE t.date >= '2000-01-01' 
    AND t.alpha < alphaBound 
    AND EXISTS(SELECT NULL 
       FROM mydb x 
       WHERE x.contractid = t.contractid 
       AND x.date > t.date) 
+0

感谢您的查询。 – stevejb 2010-09-27 04:38:20