Tag: MySQL
-
MySQL 数据库去重的简单方案
利用 distinct 对需要处理的字段进行去重 select distinct 字段名 from 表名 利用 group by select * from 表名 group by 字段名 利用 having select * from 表名 group by 字段名 having 字段名 = 要求 where 和 having 的区别 1.having 用于 group by 之后 2.where 是用于表中筛选查询,having 用于在 where 和 group 结果中查询 3.having 可以使用聚合函数,而 where 不能 4.having 执行顺序位于 where 之后
-
mysqldump –tab (ErrCode:13-Permission denied) 问题解决
在 mysql 服务器上,可以通过 load data infile ‘file_name’ into table table_name; 命令将一个文本文件中的所有数据存到指定表中。
-
实现一个简单的 MySQL 带权重的中文全文搜索
自己在写一个 web, 希望对数据库做全文检索。但是 google 了解到,由于中文分词的缘故,mysql 只支持英文的全文搜索,想支持中文的,需要各种插件 or 实现一些比较复杂的机制,而买的虚拟主机并不支持这些复杂的东西。仔细想了下,因为自己需求的功能也比较简单,主要是 2 个字段的搜索,且数据量不大,即便增加几个字段,需要多运行几个 select 也不会对速度有太大影响,所以通过一些 work around 实现了需求。 Step 1: 用 locate 进行简单的搜索 Locate 可以判断子串是否在子乱有两个 column, 一个 name, 一个 description.所以可以用 LOCATE>0 去判断是否关键字在其中出现了。其实就是 SELECT * FROM table WHERE LOCATE(key, ‘name’)>0 OR LOCATE(key, ‘description);这样,我们就简单实现了对某个 key 在两个域的搜索 Step 2: 搜索多个关键字 通常,搜索都是有多个关键字,所以我们需要对每个关键字,执行下 Step1 的查询。(当然,也可以合成一个,这里偷懒每次只查询 1 个关键字)然后,我们再将每次查询出的数组都合并,这样就得到了一个最终的集合。 Step 3:匹配的权重 上面 Step2 的结果,其实是无序的。通常,如果我们搜索一个字段:1. 如果这个字段和关键字完全相同,那么一般来讲,可能这个结果应该是相关度最高的2. 如果他只是其其中出现了一次,相关度就最低。3.…