基本SQL我知道,我找到了一种解决方法,但我确信这是一种更好的方法。
我有一张表,其中account_id可以分配两种类型的实体A和B,我想在输出表中将它们分组:
表A:
+------------+--------+--------+
| account_id | A | B |
+------------+--------+--------+
| 68129726 | Mario | null |
| 68129726 | null | Silvio |
+------------+--------+--------+
输出表:
+------------+--------+--------+
| account_id | A | B |
+------------+--------+--------+
| 68129726 | Mario | Silvio |
+------------+--------+--------+
我确定已经有了答案,只是我不知道"技术"此操作的名称。
我的解决方案(更多的解决方法):
SELECT DISTINCT account_id, MAX(A), MAX(B)
FROM TABLE A
GROUP BY account_id
有没有更好,更正确的方法呢?
答案 0 :(得分:1)
"更合适"方式是明确的GROUP BY
:
SELECT account_id, MAX(A), MAX(B)
FROM TABLE A
GROUP BY account_id;
我能想到的唯一另一种选择是加入:
SELECT a.account_id, a.a, b.b
FROM table a JOIN table b
ON a.account_id = b.account_id AND a.a IS NULL AND b.b IS NULL;
我更喜欢聚合,但在某些情况下,JOIN
会更快。