以下表格结构示例:
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”功能?
答案 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;