使用两个Que添加附加列到SQL结果集

时间:2011-01-25 02:20:48

标签: sql mysql

基本上,我想要两个单独的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,但是对于具有不同列数的查询。

2 个答案:

答案 0 :(得分: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值的查询。

答案 1 :(得分:0)

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

在较短的查询中添加尽可能多的NULL。