2011-01-25 42 views
0

基本上,我希望有两个单独的SQL查询,但我希望它们显示在相同的结果集中。但是,第一个查询返回多个列,第二个查询只返回一列。使用两个阙向SQL结果集添加额外的列

如果我想将第二个查询的结果简单地作为附加列添加到第一个查询的结果中,我该怎么做?

查询1:

SELECT cr.COMMUNICATION_ID, cr.CONSUMER_ID, cr.ACTION_LOG_ID, cal.CONSUMER_ID, cal.TIPS_AMOUNT, cal.LAST_MOD_TIME 
FROM COMMUNICATION_RELEVANCE AS cr 
JOIN consumer_action_log AS cal 
ON cr.ACTION_LOG_ID=cal.ACTION_LOG_ID; 

QUERY 2:

SELECT AVG(TIPS_AMOUNT) AS AVG_TIPS 
FROM CONSUMER_ACTION_LOG 
JOIN COMMUNICATION_RELEVANCE 
ON CONSUMER_ACTION_LOG.SENDER_CONSUMER_ID=COMMUNICATION_RElEVANCE.consumer_id; 

基本上,我想一个UNION,但对于具有不同数量的列的查询。

+0

如果两个查询中的行数不相同会发生什么? – 2011-01-25 02:39:13

回答

3

我想到你居然要添加一列,而不是一行的其他答案建议

SELECT cr.COMMUNICATION_ID, cr.CONSUMER_ID, cr.ACTION_LOG_ID, 
     cal.CONSUMER_ID, cal.TIPS_AMOUNT, cal.LAST_MOD_TIME, 
     SINGLETON.AVG_TIPS 
FROM COMMUNICATION_RELEVANCE AS cr 
JOIN consumer_action_log AS cal ON cr.ACTION_LOG_ID=cal.ACTION_LOG_ID 
CROSS JOIN 
(
    SELECT AVG(TIPS_AMOUNT) AS AVG_TIPS 
    FROM CONSUMER_ACTION_LOG 
    JOIN COMMUNICATION_RELEVANCE 
    ON CONSUMER_ACTION_LOG.SENDER_CONSUMER_ID=COMMUNICATION_RElEVANCE.consumer_id 
) SINGLETON 

的技巧是,你加盟,产生了单排,单柱AVG值查询。

0
SELECT AVG(TIPS_AMOUNT) AS AVG_TIPS, NULL, NULL, NULL... 

添加尽可能多的NULL作为较短的查询所具有的较少列。

+0

应该能够使用NULL来代替可能与实际结果相冲突的字符串或值。 – nybbler 2011-01-25 02:24:59

+0

@nybbler:应该还是不应该?我现在尝试用null和“”两者都有效,但当然是NULL!=“”。 – 2011-01-25 02:27:53