我有个问题看上去很简单,但我想不出来。
我有以下几点:
Name Zipcode
ER 5354
OL 1234
AS 1234
BH 3453
BH 3453
HZ 1234
我希望找到ID没有明确定义一行的行。
我想在这里看到:
OL 1234
AS 1234
HZ 1234
或者简单的邮政编码就够了。
,对不起,我忘了提一个重要的部分。如果名称是相同的,这不是一个问题,只有当相同的邮政编码有不同的名称时。因此这意味着: BH 3453不返回。
发布于 2014-09-29 06:08:38
我想这就是你想要的
select zipcode
from yourTable
group by zipcode
having count(*) > 1
它选择与多个记录相关联的the码。
若要回答您最新的问题:
select zipcode
from
(
select name, zipcode
from yourTable
group by name, zipcode
)
group by zipcode
having count(*) > 1
应该这么做。就性能而言,它可能不是最优的,在这种情况下,可以使用@a1ex07建议的窗口函数。
发布于 2014-09-29 06:11:18
试试这个:
select yt.*
from YOUR_TABLE yt
, (select zipcode
from YOUR_TABLE
group by zipcode
having count(*) > 1
) m
where yt.zipcode = m.zipcode
发布于 2014-09-29 06:18:04
如果您只需要邮政编码,请使用vc 74的解决方案。对于所有列,基于窗口函数的解决方案应该优于自连接方法:
SELECT a.zipcode, a.name
FROM
(
SELECT zipcode, name, count(1) over(partition by zipcode) as cnt
FROM your_table
)a
WHERE a.cnt >1
https://stackoverflow.com/questions/26101767
复制相似问题