我正在尝试执行此连接操作.因为我是sql的新手,我发现了解语法和东西的问题.
您认为以下查询有什么问题:
select top 1 * 
from 
    (select * 
     from dbo.transaction_unrated 
        where transaction_date >= '2012/05/01' 
            and transaction_date < '2012/06/01' 
            and content_provider_code_id in (1)
    )   FULL OUTER JOIN 
    (select * 
     from dbo.transaction_rated 
        where transaction_date >= '2012/05/01' 
            and transaction_date < '2012/06/01' 
            and entity_id in (1) 
            and mapping_entity_id = 1)
    ) 
    ON dbo.transaction_unrated.cst_id = dbo.transaction_rated.unrated_transaction_id
Run Code Online (Sandbox Code Playgroud)
    您需要为派生表设置别名.
select top 1 * 
from 
(
     select * 
     from dbo.transaction_unrated 
        where transaction_date >= '2012/05/01' 
            and transaction_date < '2012/06/01' 
            and content_provider_code_id in (1)
) rsQuery1  
FULL OUTER JOIN 
(
     select * 
     from dbo.transaction_rated 
        where transaction_date >= '2012/05/01' 
            and transaction_date < '2012/06/01' 
            and entity_id in (1) 
            and mapping_entity_id = 1)
) rsQuery2 ON rsQuery1.cst_id = rsQuery2.unrated_transaction_id
Run Code Online (Sandbox Code Playgroud)
FULL OUTER JOIN也很不寻常(根据我的经验).你确定那是你想要的吗?通常情况下,您将执行一个INNER JOIN带回两个表中符合条件的行,或者您将让一个表成为驱动程序并执行一个LEFT或RIGHT OUTER JOIN哪个将带回驱动表中的所有行,无论是否匹配另一张桌子.A FULL OUTER JOIN将返回两个表中的所有行,无论它们是否匹配.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           34665 次  |  
        
|   最近记录:  |