MYSQL - 按昵称分组,但显示所有不同的版本?

时间:2015-03-22 22:32:41

标签: mysql

嗨,大家好奇,如果这是可能的,

目前我有一张桌子:

"(consensus  CHAR(40) NOT NULL," 
+ "identityb32  CHAR(40) NOT NULL,"
+ "pubdate  CHAR(40) NOT NULL,"
+ "dirport  CHAR(6) NOT NULL,"
+ "ip  CHAR(40) NOT NULL,"
+ "orport  CHAR(40) NOT NULL,"
+ "fingerprint  CHAR(40) NOT NULL,"
+ "nick  CHAR(40) NOT NULL,"
+ "version  CHAR(40) NOT NULL,"
+ "flags  VARCHAR(500) NOT NULL,"
+ "identity  VARCHAR(256) NOT NULL,"
+ "digest  CHAR(40) NOT NULL,"
+ "pubtime  CHAR(40) NOT NULL)"
)

我有很多数据插入到这个数据库中,大部分数据都是重复的,但我想要做的是搜索表格,只输出昵称有多个指纹的结果

目前我正在使用代码:

SELECT nick, fingerprint, identity, ip, consensus FROM agorahooawayyfoe group by fingerprint;

要做到这一点,但这显示了我所有昵称组的标识,其中所有2,000个我想要的是将其缩小到仅向我显示昵称具有多于1个身份的结果并且通过这些来分组i

这可以在mysql命令中使用吗?

2 个答案:

答案 0 :(得分:2)

如果您想查看具有多个指纹的昵称,请使用聚合并具有:

select nick
from agorahooawayyfoe
group by nick
having count(distinct fingerprint) > 1;

如果您需要详细信息,请将其加入表格:

select a.*
from agorahooawayyfoe a join
     (select nick
      from agorahooawayyfoe
      group by nick
      having count(distinct fingerprint) > 1
     ) n
     on a.nick = n.nick;

答案 1 :(得分:0)

我认为您错过having by明确表示身份必须大于1.请参阅此链接:W3Schools - SQL HAVING Clause