Informix中的GROUP BY(11.5)

时间:2014-11-24 14:56:47

标签: sql informix

以下表格结构示例:

NR1 | NR2 | PRENAME | LASTNAME

如果我查询该表的所有4个字段并将其分组为mysql中的前2个字段(NR1,NR2), 我可以做这样的事情:

SELECT NR1,NR2,PRENAME,LASTNAME FROM tbl GROUP BY NR1,NR1

但这在informix中不起作用。

INFORMIX ERROR: the column (PRENAME) must be in the group by list

在Google上阅读了一些主题后,所有选定列都必须位于分组列表中,这是一个“Informix功能”。 但是,如果我这样做,结果就不是我想要的结果。 如果我使用

DISTINCT

而不是GROUP BY结果类似于false,因为我无法将DISTINCT函数仅放在第1列和第2列。

那么:我如何制作“MYSQL GROUP BY”功能?

1 个答案:

答案 0 :(得分:1)

您的原始语法适用于一个数据库 - MySQL。并且,该数据库表示非聚合列的结果来自 indeterminate 行。因此,等效查询只是使用MIN()MAX()

SELECT NR1, NR2, MIN(PRENAME), MIN(LASTNAME)
FROM tbl
GROUP BY NR1, NR1;

我的猜测是你想从一行中获得任意值。我倾向于将它们连接起来:

SELECT NR1, NR2, MIN(PRENAME || ' ' || LASTNAME)
FROM tbl
GROUP BY NR1, NR1;