由于maccms10(蘋果cms)采集數據方便,網上模板也一大堆,半小時就能建好一個電影網站,很多朋友都使用它。但是隨著采集源越來越多可能會造成電影或者演員數據大量重復,對搜索引擎不是很友好,對網站SEO來說大量的重復數據也是大忌。
雖然蘋果cms后臺有VOD數據去重的功能,但是沒有演員或者其他數據去重的功能,剛好今天何大佬又在咨詢這個問題,通過我一番百度結合各位其他大佬的操作,終于找到了方法。下面記錄一下。
當然,你可以直接使用后臺的一鍵刪重功能。但是演員數據貌似沒有此功能。
演員表表名:mac_actor(如果你數據庫表前綴更改過,請更改紅色部分)。
以下sql語句的功能是刪除mac_actor表中actor_name【演員名稱】重復的數據保留id最小的一條。有點繞。大白話就是:如果有相同(重復)的演員名稱就刪除,但保留id最小的那一條,這樣就不會有重復數據了。
DELETE FROM mac_actor WHERE actor_name IN(SELECT actor_name FROM (SELECT actor_name FROM mac_actor GROUP BY actor_name HAVING COUNT(actor_name) > 1) a) AND actor_id NOT IN(SELECT * FROM (SELECT MIN(actor_id) FROM mac_actor GROUP BY actor_name HAVING COUNT(actor_name) > 1) b)
以上sql語句可以直接復制粘貼過去運行。
但是要注意:如果你的表名或者數據庫前綴改了,請把紅色部分更換成和你相同的表名或字段。
上面知道刪除演員重復數據了,那重復的刪除電影數據就不難了,替換一些表名和字段不就OK了么。
替換一下就OK,刪除重復的電影名稱保留id最小的那一條,來看看完整的SQL。
DELETE FROM mac_vod WHERE vod_name IN(SELECT vod_name FROM (SELECT vod_name FROM mac_vod GROUP BY vod_name HAVING COUNT(vod_name) > 1) a) AND vod_id NOT IN(SELECT * FROM (SELECT MIN(vod_id) FROM mac_vod GROUP BY vod_name HAVING COUNT(vod_name) > 1) b)
如果你是默認數據庫,直接復制粘貼過去運行就OK了。但是如果你更改過表前綴,紅色部分依然是需要注意的,記得修改哦。下圖是測試后成功的截圖。
具體每一句的功能我就不敘了,因為我也很渣,看到都頭疼,你直接拿去用沒有問題的,是經過我測試的。
以上就是maccms10電影或演員庫數據使用sql語句去重的方法,都經過我測試可以直接復制粘貼運行的,希望對大家有幫助。