Mysql 具有通配符的DISTINCT/GROUP BY。SQL
我的桌子看起来像这样:Mysql 具有通配符的DISTINCT/GROUP BY。SQL,mysql,sql,ip,Mysql,Sql,Ip,我的桌子看起来像这样: ip 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 (...) 192.168.1.254 SELECT concat(LEFT(ipAddress, LENGTH(ipAddress) - LOCATE('.', REVERSE(ipAddress))), '.0') as ipClassThing, count(1) as numberInClassTypeThing FR
ip
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
(...)
192.168.1.254
SELECT concat(LEFT(ipAddress, LENGTH(ipAddress) - LOCATE('.', REVERSE(ipAddress))), '.0') as ipClassThing,
count(1) as numberInClassTypeThing
FROM test t
GROUP BY LEFT(ipAddress, LENGTH(ipAddress) - LOCATE('.', REVERSE(ipAddress)))
我试图从表中获得一个结果,告诉我数据库中有哪些类(例如,地址192.168.1.1的结果是192.168.1.0/24或仅192.168.1.0)
使用该数据库可以这样做吗?您可以这样做:
ip
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
(...)
192.168.1.254
SELECT concat(LEFT(ipAddress, LENGTH(ipAddress) - LOCATE('.', REVERSE(ipAddress))), '.0') as ipClassThing,
count(1) as numberInClassTypeThing
FROM test t
GROUP BY LEFT(ipAddress, LENGTH(ipAddress) - LOCATE('.', REVERSE(ipAddress)))
看
基本上,在上面,我们正在寻找最后一个出现的
,只取它前面的字符串部分,然后在末尾加上.0
使用示例数据/表格:
create table test (ipaddress varchar(50));
insert into test (ipaddress) values ('192.168.1.1');
insert into test (ipaddress) values ('192.168.1.0');
insert into test (ipaddress) values ('192.168.1.55/24');
insert into test (ipaddress) values ('10.1.1.1');
上面的查询给出了结果:
ipClassThing numberInClassTypeThing
----
10.1.1.0 1
192.168.1.0 3
我假设你所指的“类”,你可能应该指出如果是这样的话,或者如果不是这样的话,你应该指出是正确的。如果是这样的话,你只指出了一个类。一个包含不止一个类的数据集,以及您的预期结果可以帮助其他人更好地理解您的问题。我实际上指的是任何内容。试图忽略192.168.1之后的所有内容。并获得一个与192.168.1.0/24中所有地址相同的值,该值按预期工作。非常感谢。