如何在 Firebird 中使用 GROUP BY?
How to use GROUP BY with Firebird?
我正在尝试在 Firebird 中使用 GROUP BY 创建一个 SELECT,但我没有成功。我该怎么做?
异常
Can't format message 13:896 -- message file C:\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
(49,765 sec)
正在尝试
SELECT FA_DATA, FA_CODALUNO, FA_MATERIA, FA_TURMA, FA_QTDFALTA,
ALU_CODIGO, ALU_NOME,
M_CODIGO, M_DESCRICAO,
FT_CODIGO, FT_ANOLETIVO, FT_TURMA
FROM FALTAS Falta
INNER JOIN ALUNOS Aluno ON (Falta.FA_CODALUNO = Aluno.ALU_CODIGO)
INNER JOIN MATERIAS Materia ON (Falta.FA_MATERIA = Materia.M_CODIGO)
INNER JOIN FORMACAOTURMAS Turma ON (Falta.FA_TURMA = Turma.FT_CODIGO)
WHERE (Falta.FA_CODALUNO = 238) AND (Turma.FT_ANOLETIVO = 2015)
GROUP BY Materia.M_CODIGO
firebird中group by的简单使用,按所有列分组
select * from T1 t
where t.id in
(SELECT t.id FROM T1 t
INNER JOIN T2 j ON j.id = t.jid
WHERE t.id = 1
GROUP BY t.id)
使用 GROUP BY
在您的示例代码中没有意义。它仅在使用聚合函数时有用(+ 其他一些次要用途)。在任何情况下,Firebird 都要求您指定 SELECT
列列表中的所有列,但 GROUP BY
子句中具有聚合函数的列除外。
请注意,这比 SQL 标准更严格,后者允许您省略功能相关的列(即,如果您指定了主键或唯一键,则无需指定另一个table).
的列
您没有指定要分组的原因(因为使用此查询进行分组没有多大意义)。也许您想要 ORDER BY
,或者您想要每个 M_CODIGO
.
的第一行
我正在尝试在 Firebird 中使用 GROUP BY 创建一个 SELECT,但我没有成功。我该怎么做?
异常
Can't format message 13:896 -- message file C:\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
(49,765 sec)
正在尝试
SELECT FA_DATA, FA_CODALUNO, FA_MATERIA, FA_TURMA, FA_QTDFALTA,
ALU_CODIGO, ALU_NOME,
M_CODIGO, M_DESCRICAO,
FT_CODIGO, FT_ANOLETIVO, FT_TURMA
FROM FALTAS Falta
INNER JOIN ALUNOS Aluno ON (Falta.FA_CODALUNO = Aluno.ALU_CODIGO)
INNER JOIN MATERIAS Materia ON (Falta.FA_MATERIA = Materia.M_CODIGO)
INNER JOIN FORMACAOTURMAS Turma ON (Falta.FA_TURMA = Turma.FT_CODIGO)
WHERE (Falta.FA_CODALUNO = 238) AND (Turma.FT_ANOLETIVO = 2015)
GROUP BY Materia.M_CODIGO
firebird中group by的简单使用,按所有列分组
select * from T1 t
where t.id in
(SELECT t.id FROM T1 t
INNER JOIN T2 j ON j.id = t.jid
WHERE t.id = 1
GROUP BY t.id)
使用 GROUP BY
在您的示例代码中没有意义。它仅在使用聚合函数时有用(+ 其他一些次要用途)。在任何情况下,Firebird 都要求您指定 SELECT
列列表中的所有列,但 GROUP BY
子句中具有聚合函数的列除外。
请注意,这比 SQL 标准更严格,后者允许您省略功能相关的列(即,如果您指定了主键或唯一键,则无需指定另一个table).
的列您没有指定要分组的原因(因为使用此查询进行分组没有多大意义)。也许您想要 ORDER BY
,或者您想要每个 M_CODIGO
.