mysql专题系列十四:三个实用小技巧
一、mysql中实现rownum,对结果进行排序
其中的一个问题就是但是用rownum函数的时候发现Mysql里面没有,所以只能用曲线救过的方式如下:
SELECT
(@rownum := @rownum + 1) AS rownum,
USER.*
FROM
USER,
( SELECT @rownum := 0 ) r;
效果图:
由于是通过曲线救过方式实现,所以肯定没有Oracle自身实现的效率高;希望在以后的更新中,Mysql可以自带该函数,这里只是一种实现方式,没有考虑效率高低,只是可以使用而已,如果以后有时间我可以通过多种方式实现,对比每种实现方式的效率高低。
SELECT
(@rownum := @rownum + 2) AS rownum,
USER.*
FROM
USER,
( SELECT @rownum := 1 ) r;
效果图:
关于oracle的rownum的解释和使用可以参考这篇文章:
blog.csdn.net/weter_drop/…
二、 mysql判断某一张表是否存在的sql语句以及方法
有五种方式进行判断:
-- 百分号中间为需要查询的表名
SHOW TABLES LIKE ‘%user%’;
dbname 为数据库名字 tablename 为你需要查询的表名称,注意使用 TEMPORARY 关键字创建出来的临时表无法查询出来。
select TABLE_NAME from INFORMATION_SCHEMA.TABLES whereTABLE_SCHEMA=‘dbname’ and TABLE_NAME=‘tablename’ ;
-
如果表不存在就建立这个表,那么可以直接用 create table if not exists tablename 这样的指令来建立,不需要先去查询表是否存在。
-
从模板表创建表:create table if not exists like old_table_name;
-
使用select * from tablename;如果表不存在则会报错。
三、 limit的巧妙用法
应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求
语法:
select 查询列表
from 表
【join type join 表2
on 连接条件
where 筛选条件
group by 分组字段
having 分组后的筛选
order by 排序的字段】
limit 【offset,】size;
offset要显示条目的起始索引(起始索引从0开始)
size 要显示的条目个数
特点:
①limit语句放在查询语句的最后
②公式
要显示的页数 page,每页的条目数size
select 查询列表
from 表
limit (page-1)*size,size;
size=10
page
1 0
2 10
3 20
*/
案例1:查询前五条员工信息(如果从零开始查询可以省略offset参数)
SELECT * FROM employees LIMIT 0,5;
SELECT * FROM employees LIMIT 5;
案例2:查询第11条——第25条
SELECT * FROM employees LIMIT 10,15;
转载自:https://juejin.cn/post/7059400703420137509