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

MySQL在不知道的情况下获取以相同模式开始的行数,mysql,Mysql,我有一个MySQL数据库,其中有一个包含MAC地址的表,我想知道有多少组具有相同的制造商(MAC的前三个八位字节) 我可以选择具有相同三个起始八位字节的MAC组: select `mac` from `t1` where `mac` LIKE 'FC:E9:98%'; 但是那样的话,我必须为每个制造商手工操作。 有没有办法要求每一组不同的Mac从相同的三个八位字节开始,而不必指定它们 谢谢 编辑: 谢谢你们这么快就回答了。 这两种解决方案都很有效: select left(mac,8) mac

我有一个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:)

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

SELECT     LEFT(mac, 8) mac
,          COUNT(1) CNT
FROM       T1
GROUP BY   LEFT(mac, 8)
这应该可以工作(虽然
LEFT
函数可能只适用于qsl服务器;我不知道,否则使用substring方法。编辑:查找:
LEFT
在mysql中也可用)
LEFT
将字符串和int作为参数,返回字符串的第一个(左)字符,其数量由第二个int参数确定

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

您可以通过子字符串获取具有该mac前缀的行数:

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

您可以通过子字符串获取具有该mac前缀的行数:

select count(*), substring(mac, 1, 8)
from t1
group by substring(mac, 1, 8)
选择mac 从t1开始 按子串_指数(mac,,,,3)分组

选择mac 从t1开始
按子串_指数(mac,,,,3)分组

您可以使用以下答案:

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

您可以使用以下答案:

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

共享一些虚拟数据共享sql中的一些虚拟数据子字符串(在任何情况下,在sql server中)基于1,而不是0。因此,以0开头的长度为8将得到一个7个字符的字符串。哎呀,这是一个未经测试的假设。谢谢,请编辑以更正。sql中的子字符串(无论如何,在sql server中)基于1,而不是0。因此,以0开头的长度为8将得到一个7个字符的字符串。哎呀,这是一个未经测试的假设。谢谢,请编辑以更正。