基于mysql查询语句的使用详解

 更新时间:2013年05月14日 16:44:45   作者:  
本篇文章是对mysql查询语句的使用进行了详细的分析介绍,需要的朋友参考下

1> 查询数据表除了前三条以外的数据。

   起初我想到的是这条语句

   SELECT * FROM admin WHERE userid NOT IN (SELECT userid FROM admin ORDER BY userid LIMIT 3) ORDER BY userid DESC 

  但是运行的时候会报 This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery

这个的意思是表示子查询的时候不支持limit ,还有一点我就是很二了 就是查询的时候用not in 效率非常不高

最后的解决办法是

    CREATE VIEW view_top3_admin AS SELECT * FROM admin ORDER BY userid LIMIT 3;

先创建一个视图 将子查询条件放到视图里面

  然后在用这条语句

 SELECT * FROM admin a WHERE NOT EXISTS (SELECT 1 FROM view_top3_admin b WHERE b.userid=a.userid ) ORDER BY a.userid DESC

 先来解释下这条语句  SELECT 1 FROM view_top3_admin b WHERE b.userid=a.userid  表示查询表里面的值 只要有数据都显示为 1,1表示不读取数据

这样的话就是提升了查询的性能,当然也可以把 里面的1  换成 null 性能是一致的。整条语句的意思是查询admin表值, 判断条件是值不在子查询表里的。

2 > union 和 union all 的使用

先来解释下这两个关键字在mysql数据库中提供了UNION和UNION ALL关键字,这两个关键字都是将结果集合并为一个,但这两者从使用和效率上来说都有所不同

UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。

select * from table union select * from tabl

UNION ALL只是简单的将两个结果合并后就返回 如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了

select * from table union all select * from tabl

从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION 

这两个关键字用做报表比较多

相关文章

  • MySQL如何清空慢查询文件

    MySQL如何清空慢查询文件

    这篇文章主要介绍了MySQL如何清空慢查询文件,如何在线生成一个新的慢查询文件,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • mysql中grant all privileges on赋给用户远程权限方式

    mysql中grant all privileges on赋给用户远程权限方式

    这篇文章主要介绍了mysql中grant all privileges on赋给用户远程权限方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 不使用MySQL数据库的五个给力理由解析

    不使用MySQL数据库的五个给力理由解析

    众所周知,MySQL数据库虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。
    2011-03-03
  • mysql json格式数据查询操作

    mysql json格式数据查询操作

    这篇文章主要介绍了mysql json格式数据查询操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • MYSQL开启远程访问权限的方法

    MYSQL开启远程访问权限的方法

    在本篇文章里小编给大家整理的是关于MYSQL开启远程访问权限的方法,对此有兴趣的朋友们可以跟着学习下。
    2020-02-02
  • MYSQL ON UPDATE CURRENT_TIMESTAMP当字段值发生改变时才会更新记录的时间

    MYSQL ON UPDATE CURRENT_TIMESTAMP当字段值发生改变时才会更

    本文主要介绍了MYSQL ON UPDATE CURRENT_TIMESTAMP当字段值发生改变时才会更新记录的时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • MySQL查看用户权限及权限管理的方法详解

    MySQL查看用户权限及权限管理的方法详解

    在MySQL中,查看用户权限可以通过多种方式实现,主要取决于我们想要查看的权限类型和详细程度,本文给大家介绍了MySQL查看用户权限及权限管理的方法,并通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • docker 部署mysql详细过程(docker部署常见应用)

    docker 部署mysql详细过程(docker部署常见应用)

    这篇文章主要介绍了docker 部署mysql之docker部署常见应用,本文以docker部署mysql5.7.26为例,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • MySQL数据同步出现Slave_IO_Running: No问题的解决

    MySQL数据同步出现Slave_IO_Running: No问题的解决

    本人最近工作中遇到了Slave_IO_Running:NO报错的情况,通过查找相关资料终于解决了,下面这篇文章主要给大家介绍了关于MySQL数据同步出现Slave_IO_Running: No问题的解决方法,需要的朋友可以参考下
    2023-05-05
  • Windows环境下重置mysql密码操作命令

    Windows环境下重置mysql密码操作命令

    Windows XP系统、xampp集成环境如何重置mysql密码,接下来为大家详细介绍下,感兴趣的各位可以参考下哈,希望可以帮助到你们
    2013-03-03

最新评论