MySQL-在何处使用Distinct

MySQL-在何处使用Distinct,mysql,Mysql,我有两列,一列应该是唯一的,但有重复的,我想删除和一列,我需要重复计数。我终于算出了等式的后半部分,但我仍然需要算出如何从第一列中删除重复项 SELECT map.newvalue as 'Model of Phone', Count(*) as 'Number of Phones' FROM items i, hosts h, history_uint huint, mappings map WHERE h.hostid=i.hostid AND h.name='$Hosts' AND i.i

我有两列,一列应该是唯一的,但有重复的,我想删除和一列,我需要重复计数。我终于算出了等式的后半部分,但我仍然需要算出如何从第一列中删除重复项

SELECT map.newvalue as 'Model of Phone', Count(*) as 'Number of Phones'
FROM items i, hosts h, history_uint huint, mappings map
WHERE h.hostid=i.hostid AND h.name='$Hosts' AND i.itemid=huint.itemid AND i.valuemapid=map.valuemapid AND huint.value=map.value AND i.name LIKE '%Model of the Phone'
GROUP BY map.newvalue
ORDER BY 'Item Name' DESC
LIMIT 100;
从中获取重复值的table.column是
i.name
。抱歉,如果我的查询看起来很糟糕,我只是一个假装懂SQL的IT人员。谢谢你的帮助


如果以后有人看到这一点,我正在通过SNMP和Zabbix从Call Manager收集电话型号,并在Grafana中显示。

您不能在where子句中使用distinct,但可以使用group by进行多列尝试

SELECT map.newvalue as 'Model of Phone', Count(*) as 'Number of Phones'
FROM items i, hosts h, history_uint huint, mappings map
WHERE h.hostid=i.hostid AND h.name='$Hosts' AND i.itemid=huint.itemid AND i.valuemapid=map.valuemapid AND huint.value=map.value AND i.name LIKE '%Model of the Phone'
GROUP BY map.newvalue, i.name
ORDER BY 'Item Name' DESC
LIMIT 100;
由于在GROUPBY中添加了额外的字段,它将稍微改变您的结果,但它将为您提供唯一的名称和newvalue结果


希望这能对您有所帮助。

非常感谢您的快速回复,但它似乎没有给我正确的输出。我认为我没有很好地解释我自己。我只需要来自I.name的唯一值,以及来自map.newvalue的值计数。。。但我只想在输出上显示map.newvalue和它们的计数。如果只想在map上显示newvalue及其计数,那么为什么要查找唯一的i.name字段。你能在这里显示真实的和预期的输出吗?谢谢你再次回复。我正在使用一种叫做Zabbix的产品,用于监控系统。“i”表是它为每个系统监控的所有不同项目。所以“i.name”是指支票的名称。现在,我有两张支票,由于某些奇怪的原因,它们的名字完全相同,尽管支票中包含了特定手机的MAC地址。所以其中一个检查(i.name)返回一个对应于映射表中Cisco手机型号的数字,这真的很糟糕。我正在寻找其他方法来清理我的I.name列表,因为它们应该是唯一的,但这基本上就是我所需要做的,检查I表中的name值并从该表中仅返回唯一值。我正在寻找添加内部联接的方法,但对于2 amSee about JOINs,这似乎有点超出我的理解。那就看啊!!很高兴知道。。。我会把一些东西放在一起。。。非常感谢。如何添加MCVE?对不起,我对StackOverflowl很陌生,幸运的是,所有的解释都非常详细