使用 WordPress 的过程中,我一直很好奇 WordPress 的一个功能,大家都知道在 WordPress 的编写文章的时候,可以自定义栏目,而这个自定义栏目的数据保存到 wp_postmeta 表中,如果你往 wp_postmeta 表中添加一个新的 meta_key,那么在 WordPress 的自定义栏目那里就会看到这个新的字段,可是这个表里面有那么多的数据,他是如何查询得到的数据。在网上搜索了半天,才发现 MySQL 的 SQL 查询语句可以查询不重复记录值的功能,真是大开眼界,也许可能是我不知道吧,其他的数据库应该也有这样的功能。
MySQL 提供了 distinct 这个关键词来过滤掉重复记录而值保留一条查询结果,这样就能有效的去除多余的结果,以前我的方法就是使用二次循环,现在想想以前的方法真是太笨了,如果对于大型的网站而言,简直没法完成查询。 我的 WordPress 数据库中的 wp_postmeta 表都有 10,000 多行了,如果使用两次循环查找判断,程序性能肯定很低。
如果我想用一条语句查询得到 name 不重复的所有数据,那就必须使用 distinct 去掉多余的重复记录。
select distinct `meta_key` from `wp_postmeta`
从上图可以看出查询的结果只有24条了,所有meta_key相同的都被排除了。