我很抱歉缺乏合适的头衔,但我不知道如何解释这一点。
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
如果您需要更多信息,请与我们联系。
答案 0 :(得分:3)
最简单的答案是在所有列中使用MAX()
和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
Herr的解决方案比上述声明好,
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