SQL FULL JOIN语法

时间:2013-07-18 14:26:40

标签: sql

我在解决SQL语法问题上遇到了问题。我有三个桌子我需要完全外部加入,但起初我正试图让它与其中两个一起工作。只是无法弄清楚出了什么问题。

这仍然有效:

SELECT SUM(A.charge-A.comp), COUNT(A.id)
FROM A
FULL JOIN init ON (A.house=init.house)
WHERE A.tag='V' AND A.house='first'

但是当我将init字段添加到选定列表时,它会出现语法错误。所以这个不再适用了:

SELECT SUM(A.charge-A.comp), COUNT(A.id), init.resp
FROM A
FULL JOIN init ON (A.house=init.house)
WHERE A.tag='V' AND A.house='first'

任何想法为什么会这样?

顺便说一下。我正在使用PostgreSQL 9.1。

1 个答案:

答案 0 :(得分:2)

问题与加入无关。您需要group by,因为您具有非聚合列的聚合函数。也许你的意思是:

SELECT SUM(A.charge-A.comp), COUNT(A.id), init.resp
FROM A
FULL JOIN init ON (A.house=init.house)
WHERE A.tag='V' AND A.house='first'
group by init.resp;

否则,您可能需要一些聚合函数:

SELECT SUM(A.charge-A.comp), COUNT(A.id), sum(init.resp)
FROM A
FULL JOIN init ON (A.house=init.house)
WHERE A.tag='V' AND A.house='first'