我有一个查询(实际上是一个视图),通常应该定义一个从key
to的唯一映射value2
。
select key, value1, value2
from tbl -- joins are left out here
where (1=1) -- left out here
order by key
;
通常结果是这样的
key value1 value2
--------------------------
Harry fish blue
Sally dog green
Willy dog red
所以我可以唯一地映射key
到value2
。
但是当它发生时,底层数据可能有一天会包含垃圾:
key value1 value2
--------------------------
Harry fish blue
Harry fish black -- <<< breaks uniqueness
Sally dog green
Willy dog red
我想添加HAVING
和/或GROUP BY
表达式来轻松识别非唯一行。因为在这种情况下我必须做一些事情,value2
所以我必须以某种方式聚合它——我的想法是max
。
因此,一个示例结果将是
key value1 value2 count_value2
----------------------------------------
Harry fish blue 2
Sally dog green 1
Willy dog red 1
但和往常一样,我完全被GROUP BY
它的配偶弄糊涂了。我在哪里呢?聚集的地点和地点?