在mysql视图中,想要创建视图的同时,在sql查询语句中将原数据按照某一字段排序。

以我所遇到的情况为例,我想要查询视图中的数据,并将其按照市值(total_mv)降序排序。

以下是sql语句:

select @rownum:= @rownum+1 AS 市值排名,name,ts_code,total_mvfrom stock_all,(SELECT @rownum:=0) b order by total_mv DESC

如过只是查询,那么这样没什么问题,但如果是在创建视图的同时带这个查询,那么在mysql中就会报以下错误:

create or replace view stock_all1asselect @rownum:= @rownum+1 AS 市值排名,name,ts_code,total_mvfrom stock_all,(SELECT @rownum:=0) border by total_mv DESC

这是因为在mysql中,不允许创建视图的语句里有变量(带@)

我们可以通过自定义函数的方式,让返回值每次自加1,来取代变量

以数据库工具navicat为例,点击函数--》新建函数--》输入函数名,点击完成

然后输入以下代码,改代码有两个功能置零和自增1,这样写的原因可以参考这个博主的文章:mysql 视图 行号_MySQL踩坑记之视图添加行号_怡一的博客-CSDN博客

CREATE DEFINER=py_stock@% FUNCTION rank_total_mv(RESET BIT) RETURNS int NO SQL
BEGIN IF RESET THEN SET @rownum:= 0; ELSE SET @rownum:= IFNULL(@rownum,0)+1; END IF; RETURN @rownum;
END

点击保存会发现,提示以下错误:

原因是自定义函数需要相应权限,我们可以进入mysql的root用户下输入以下指令打开创建函数开关:

SET GLOBAL log_bin_trust_function_creators = 1;

如果是线上数据库,可以在下图所示地方开启:

在sql框中输入上面的指令,点至执行即可。

此时再回到navicat可以发现,函数已经可以创建:

然后我们将创建视图语句中的变量换为自定义的函数即可:

create or replace view stock_all1asselect rank_total_mv(0) AS 市值排名,name,ts_code,total_mvfrom stock_all,(SELECT rank_total_mv(1)) border by total_mv DESC

下面为视图结果显示:

参考文章:mysql 视图 行号_MySQL踩坑记之视图添加行号_怡一的博客-CSDN博客

mysql视图添加行号排名相关推荐

  1. 给ListView视图添加行号

    最后的效果如下: 更新,集成一个独立的模块而不改变源文件的方式更为稳妥. 购买地址:https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-26531 ...

  2. MySQL给查询结果添加行号的方法及应用

    1.给查询结果添加行号的方法 方法1: SET @rownum:=0; -- 注意:SQL语句中":="表示赋值,"="表示比较,"@"表示 ...

  3. MySQL给查询结果添加行号

    给查询结果添加行号的方法 SET @rownum:=0; -- 注意:":="表示赋值,"="表示比较,"@"表示变量SELECT prov ...

  4. 1、MySQL视图是什么?

    MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中.行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的. 数据库中 ...

  5. mysql视图实现的_mysql视图是什么?怎么实现?

    mysql视图是什么?怎么实现? 发布时间:2020-05-21 18:00:24 来源:亿速云 阅读:152 作者:鸽子 视图本身是一张虚拟表,不存放任何数据.在使用SQL语句访问视图的时候,获取的 ...

  6. mysql排序行号_mysql 取得行号后再排序

    一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tre ...

  7. mysql 视图 数据相加_MySQL

    查看安装路径 ps -ef|grep mysql 1,配置linux虚拟机,修改IP ????? vim /etc/sysconfig/network-scripts/ifcfg-eth0 2,配置完 ...

  8. mysql 视图 教程_MySQL视图简介及基本操作教程

    前言 视图是数据库系统中一种非常有用的数据库对象.MySQL 5.0 之后的版本添加了对视图的支持. 认识视图 视图是一个虚拟表,其内容由查询定义.同真实表一样,视图包含一系列带有名称的列和行数据,但 ...

  9. word如何添加行号_如何将行号添加到Microsoft Word文档

    word如何添加行号 Adding line numbers to a Microsoft Word document can help you point others to exact posit ...

最新文章

  1. Megengine量化
  2. AI时代,谈数据分析时我们要谈些什么?
  3. 软硬链接、文件删除原理、linux中的三种时间、chkconfig优化
  4. C# Task的使用
  5. Android手机使用命令行增加/删除/修改密码(password/pin/pattern)
  6. 【模拟】P1563 玩具谜题
  7. vba oracle 01019,Oracle 客户端连接时报ORA-01019错误总结
  8. Mac之当前目录打开终端
  9. CNN中的卷积操作与权值共享
  10. WebScoket 规范 + WebSocket 协议
  11. OpenShift 4 - 部署一个基于 Serverless 的 Banking 应用
  12. 喵哈哈村小学上课啦(欧拉函数)
  13. 【雷达】Tracking radar targets with multiple reflection points
  14. matlab安装matconvnet
  15. 场内场外交易成本_场内基金交易费用更低,但为什么我们都建议大家购买场外基金?...
  16. Python Turtle绘图基础(一)——Turtle简介、绘图窗体与绘图区域
  17. php不显示notice,解决PHP显示Warning和Notice等问题
  18. STM32日历读取,设置和输出
  19. android手机版本
  20. 大数据转型方案:首推数据湖!

热门文章

  1. 总结证书扩展和证书分类
  2. 巨人征途的成功 依赖于不处不在的海报
  3. 四类线性相位 FIR滤波器设计 —— MATLAB源码全集
  4. 大工17秋《计算机文化基础》在线测试1,大工15秋《计算机文化基础》在线测试1答案 满分!...
  5. PHP 下载压缩文件
  6. 练手项目一:手机安全卫士
  7. 北京理工大学计算机学院课多吗,北京理工大学计算机考研难不难?看看学长都有哪些说法...
  8. 传奇gm命令怎么用_全新强大的传奇GM后台命令脚本
  9. win7下android+Cocos2d-x 2.23 环境搭建
  10. 过期高权重有外链历史的老域名挖掘查询软件