MySQL在不知道的情况下获得以相同模式开头的行数

时间:2015-09-03 11:15:34

标签: mysql

我有一个MySQL数据库,其中包含一个包含MAC地址的表,我想知道有多少组具有相同的制造商(MAC的第一个八位字节)。

我可以选择具有相同三个起始八位字节的mac组:

select `mac` from `t1` where `mac` LIKE 'FC:E9:98%';

但是我必须为每个制造商手动完成。 有没有办法要求从相同的三个八位字节开始的每个不同的mac组,而不必指定它们?

谢谢!

编辑:

谢谢你们快速回答。 这两种解决方案都运行良好:

select left(mac,8) mac , count(1) cnt from t1 group by left(mac, 8);

select count(*),mac from t1 group by SUBSTRING_INDEX(mac,':',3);

我对你的答案投票的声誉仍然太低,但你给我节省了很多时间+1! :)

4 个答案:

答案 0 :(得分:3)

这应该有用(虽然LEFT函数可能只适用于qsl服务器;我不知道,否则使用substring方法。编辑:查找:LEFT也可用于mysql) 。 LEFT接受一个字符串和一个int作为参数,返回字符串的第一个(左)字符,其数量由第二个int参数确定。

SELECT     LEFT(mac, 8) mac
,          COUNT(1) CNT
FROM       T1
GROUP BY   LEFT(mac, 8)

答案 1 :(得分:1)

您可以使用子字符串获取带有该mac前缀的行数:

select count(*), substring(mac, 1, 8)
from t1
group by substring(mac, 1, 8)

答案 2 :(得分:1)

您可以使用以下答案:

SELECT mac FROM t1 GROUP BY substring(mac, 1, 8);

答案 3 :(得分:0)

选择mac 从t1 由SUBSTRING_INDEX分组(mac,':',3);