2

我很抱歉没有一个像样的标题,但我不知道如何解释这一点。

id     fk_id     name     attr1     attr2     attr3     attr4
---------------------------------------------------
1      1         test     1         null      null      null
2      1         testa    null      2         null      null
3      1         testb    null      null      3         null
4      1         testc    null      null      null      4

有没有办法对它进行分组以便它返回

id     fk_id     name     attr1     attr2     attr3     attr4
---------------------------------------------------
1      1         test     1         2         3         4

如果您需要更多信息,请告诉我。

4

1 回答 1

4

最简单的答案是在所有列中使用MAX()and MIN(),但这有时会给出无效的结果。

SELECT MIN(ID), fk_ID, MIN(name), 
       MAX(attr1) attr1, MAX(attr2) attr2, MAX(attr3) attr3, MAX(attr4) attr4
FROM   tableName
GROUP  BY fk_ID

这是一个比上面的陈述更好的解决方案,

SELECT  a.fk_ID, a.ID, a.Name,
        b.attr1, b.attr2, b.attr3, b.attr4
FROM    tableName a
        INNER JOIN
        (
            SELECT  fk_id, MIN(id) ID,
                    MAX(attr1) attr1, MAX(attr2) attr2, 
                    MAX(attr3) attr3, MAX(attr4) attr4
            FROM    tablename
            GROUP   BY fk_id
        ) b ON a.fk_id = b.fk_id AND a.ID = b.ID
于 2013-09-21T18:59:50.430 回答