visitors table
-------------------------------------------------------
id(auto_incr.) | ip | isp | count | time | (isp_id)
-------------------------------------------------------
我有这个MySQL表,其中包含所有唯一的IP地址和IP访问我的网站的次数,包括其他IP信息,例如ISP,时间等。
如何添加另一个称为isp_id的列,我们将为每个ISP唯一?
例如,如果某个特定的ISP存在10次,则这些ISP的isp_id将相同,如果另一个ISP存在2次,则isp_id将增加1。
我怎样才能做到这一点?
对不起,我的英语不好。我来自阿尔巴尼亚。
涉及几个查询,您可以在此处查看演示:http : //sqlfiddle.com/#!2/e87cd/1/0
简而言之,步骤1是创建一个表来保存ISP(每个ISP一行):
create table isps (
id int not null auto_increment,
isp_name varchar(20),
primary key (id)
);
您要基于当前访问者表上的ISP来填充该表,如下所示:
insert into isps
(isp_name)
select distinct isp from visitors;
然后将isp_id列添加到VISITORS表中,如下所示:
alter table visitors add column isp_id int;
然后更新您的VISITORS表,以包括与ISPS表的行关联的ISP_ID值:
update visitors v
set v.isp_id =
(select i.id from isps i where i.isp_name = v.isp);
完成上述操作后,我也建议删除VISITORS表的当前ISP列,并仅保留上面刚刚添加的ISP_ID字段。您始终可以加入ISPS表以获取给定ISP_ID的名称。
为此,请运行:
alter table visitors drop column isp;
如您所见,只需在那时加入就足够了,而且您不再有多余的数据,例如:http : //sqlfiddle.com/#!2/1e7d6/1/0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句