大家好,我是擅长快速建站的兼职小哥,给客户建网站的时候,有一些栏目内容是原样采集过来的,也就是说参照的网站本身就有bug,网站栏目的专题页面保存在content字段中,有的栏目这个字段填写了,有的栏目这个字段没有填写内容,如果后面建了一个typedir和之前栏目和typedir相同,并且后面栏目和content为空,那么整个专题就会变成空白页面。
那个我们这个问题的第一个解决方案,就是将网址相同的第二个typedir相同栏目的栏目属性选择为外部链接。这样就做了一个专题页面的镜像,比如一个专题属于即整形分类,又属于活动专题的分类时,会经常用到这种镜像操作,这个时候我们填写内容的时候,就到第一个栏目里填写就对了。
第二种方法是用SQL语句删除网址相同的栏目,如果客户网站是没有安装phpmyadmin,可以上传一个单文件sql管理工具Adminer,这是一个类似phpmyadmin和数据库操作工具,可以执行sql语句,在我们执行sql语句之前,要使用织梦后台的备份功能把数据库整体做一下备份。
我们先说一下删除重复数据的原理,这个删除重复数据的需求经常出现在面试题中,您可以记录收藏一下。
select id from dede_arctype where id in (select min(id) as id from dede_arctype where content<>'' and ispart<>2 group by typedir having count(id) > 1)
这条SQL语句会筛选出重复的数据记录,以id最小的为准,那么后面的数据将不显示。
select id from dede_arctype where id in (select max(id) as id from dede_arctype where content<>'' and ispart<>2 group by typedir having count(id) > 1)
这条SQL语句名筛选出重复的数据记录,以id最大的为准,后面的数据不显示,我们在这里选择执行这条语句。
我们能否像其它数据库一样,外面再嵌套一层语句,将重复数据直接删除呢?试一下
delete FROM `dede_arctype` WHERE `id` in (select id from dede_arctype where id in (select max(id) as id from dede_arctype where content<>'' and ispart<>2 group by typedir having count(id) > 1))
mysql数据库报错了。我们还是只把mysql当成一个绿色小巧的数据库工具吧,我们在mysql-front中将重复的id复制出来,再在文本编辑器里将回车替换成逗号
最后拼接成这样的语句,在客户服务器上的Adminer接口上执行这条删除指令,即可。
delete from dede_arctype where id in(37,197,198,201,203,205,208,209,210,211,218,225,227,230,232,235,241,242,243,254,255,256,259,260,265,267,268,270,271,272,274,275,276,277,278,279,280,282,283,284,285,286,287,288,289,291,292,293,294,295,296,298,299,302,304,305,306,310,311,312,313,314,315,316,317,319,320,321,322,325,326,329,335,342,343,344,345,346,347,348,349,350,351,352,353,354,360,361,363,367,368,370,374,377,381,383,385,386,387,410,413,415,417,418,420,421,422,423,424,425,426,428,429,430,431,468,532)
注意用完Adminer或者phpmyadmin之后,一定要删除这两个软件,以免留下安全隐患。
欢迎关注我的头条号,兼职小哥,关注后您可以点击底部的快速建站菜单,与我联系!
评论留言