0

此查询抛出ERROR - [position 0, near 'WHERE' in 'Select path.ePath, path._'] COMMA expected but not found in GROUP BY.

这是我的查询:

Select path.ePath, path._rowid, doc.Filenumber, COUNT(doc.ePathUID) AS children
from docPath path LEFT OUTER JOIN
     docMeta doc
     ON doc.ePathUID = path._rowid
GROUP BY path._rowid

我期望计算关系的每个孩子,但查询不起作用。我怎样才能使查询工作?

4

2 回答 2

1

ON在错误的上下文中使用了该语句,它应该是WHERE

Select path.ePath, path._rowid, doc.Filenumber, COUNT(doc.ePathUID) AS children
from docPath path LEFT OUTER JOIN
     docMeta doc
     WHERE doc.ePathUID = path._rowid
GROUP BY path._rowid
于 2014-11-28T16:43:21.193 回答
0

您必须按您在选择中拥有的所有列进行分组,除了您使用聚合函数的列。所以它应该是这样的:

Select path.ePath, path._rowid, doc.Filenumber, COUNT(doc.ePathUID) AS children
from docPath path LEFT OUTER JOIN
     docMeta doc
     ON doc.ePathUID = path._rowid
GROUP BY path.ePath, path._rowid, doc.Filenumber

为了更好地理解为什么您必须按选择列表中的所有列进行分组:假设您的列 ID 为 vaules 1,1 ,名称为 David,John 。你会输入

select ID, Name from table group by ID

现在您将按 ID = 1 分组,因此您将得到一行 ID 为 1 的行,列 NAME 中的值是多少?SQL 不能只是随机选择其中一个名称。所以你必须按他们两个分组

select ID, Name from table group by ID,Name

在这种情况下,结果将是:

ID NAME 
1   David 
1   John
于 2014-11-28T13:35:01.717 回答