【发布时间】:2013-11-08 01:41:19
【问题描述】:
我在尝试运行以下查询时收到错误 subquery must return only one column:
SELECT mat.mat as mat1, sum(stx.total ) as sumtotal1,
(
SELECT mat.mat as mat, sum(stx.total) as sumtotal
FROM stx
LEFT JOIN mat ON stx.matid = mat.matid
LEFT JOIN sale ON stx.saleid = sale.id
WHERE stx.date BETWEEN '2013-05-01' AND '2013-08-31'
AND sale.userid LIKE 'A%'
GROUP BY mat.mat
) AS MyField
FROM stx
LEFT JOIN mat ON stx.matid = mat.matid
LEFT JOIN sale ON stx.saleid = sale.id
WHERE stx.date BETWEEN '2013-05-01' AND '2013-08-31'
AND sale.userid LIKE 'B%'
GROUP BY mat.mat
是什么导致了这个错误?
【问题讨论】:
-
@user2431581,您正在通过子查询定义字段
MyField。当您这样做时,子查询必须只返回一个值和一个字段。您将返回mat.mat和sum(stx.total)。那是非法的 SQL 语法。
标签: sql postgresql join left-join cross-join