MySQL-在哪里使用不同

时间:2019-03-15 05:08:28

标签: mysql

我正在处理2列,其中一列应该是唯一的,但有要删除的重复项,而一列需要计数重复项。我终于找到了方程式的后半部分,但是我仍然需要弄清楚如何从第一列中删除重复项。

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。抱歉,如果我的查询看起来很糟糕,我只是一个IT人士,她假装知道SQL。谢谢您的协助!

以防其他人在以后的生活中看到这种情况,我正在通过SNMP和Zabbix从Call Manager收集电话模型,并在Grafana中显示它。

1 个答案:

答案 0 :(得分:-1)

您不能在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;

由于在group by中添加了额外的文件,它会稍微改变您的结果,但是它将为您提供唯一的名称和newvalue结果。

希望这会对您有所帮助。