首页 > 数据库 >mysql自定义变量

mysql自定义变量

时间:2023-05-31 16:33:50浏览次数:66  
标签:变量 自定义 gender mysql rownum 排序 select name

1.自定义变量
语法:set @变量名:=值; (冒号可以不加)
或者 select @变量名:=值;(冒号必须加);
使用方法:select @变量名;

2.基础知识(用了变量后就是先排序):
mysql语句的执行顺序:正常是先查询后排序,但是如果 使用了变量,就是先排序后查询

1)先查询后排序:

select gender,
first_name as name,age from person order by name;

2)先排序后查询:
如果是先执行排序后执行查询,不可能查询出来0值;
如果是先执行查询后执行排序,会查询出来0值;

set @rownum:=0;
select
	first_name,
	gender,
	@rownum
from person
where @rownum<=1
order by first_name,least(0,@rownum:=@rownum+1);

知识点:LEAST()函数是GREATEST()的相反函数。 其目的是为了返回从值列表(N1,N2,N3,和等)的项最少值。

数据分析面试之mysql的分组排序和变量赋值排序
根据不同性别进行人员分组,然后分组按照年龄进行升序排序得到序号

方法一:用窗口函数很容易:

select * ,row_number() over(partition by gender order by age) 排名
from person;

方法二:用变量定义的方法
注:mysql8.0中已经支持窗口函数,有rank关键字,故不能再使用rank作为自定义变量名称

select
	first_name,gender,age,rankk
from
(select
	first_name,
	gender,
	age,
	@rankk:=if(@gen=gender,@rankk+1,1) as rankk,
	@gen:=gender
from person,(select @rankk:=0,@gen:=null) temp  -- 临时表做笛卡尔积
order by gender,age asc) a;

注:SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值,故这里使用select定义变量


select @rownum:=@rownum+1 as rownum, id
from trc_letter , (select @rownum:=0) t;

标签:变量,自定义,gender,mysql,rownum,排序,select,name
From: https://www.cnblogs.com/julia888/p/17446553.html

相关文章

  • UE4中控制台变量
    #前言此文为ConsoleVariablesinC++(opensnewwindow)的原创翻译,本文内容版权归原文所有,仅供学习,如需转载望注本文地址,翻译不易,谢谢理解。一个控制台命令是用户输入字符发送到引擎然后引擎以某种方式反应(比如console/log变量,改变内部状态)。一个控制台变量会额外地保存一......
  • Streamsets读取binlog数据实时同步到MySQL
    原文:https://blog.csdn.net/maomaosi2009/article/details/1082932171、说明实时同步binlog数据到MySQL我使用了2种方式,2、方式一第一种方式较为繁琐,数据从binlog流出,经过JS数据解析器将必要的字段解析出来,流入操作选择器,根据具体需要执行的增删改操作选择最后的JDBCProducer,pi......
  • Gorm - 使用gorm时进行执行自定义SQL的几种方式
    1、当只需要执行某个SQL而不需要进行获取返回值时//如果其中有变量,则使用?进行占位,sql:="要执行的SQL"//在Exec方法中在sql后面可以使用多个参数作为占位的补充//例如需要name=?,则写法可以使用util.Db.Exec(sql,"张三").Errorerr:=util.Db.Exec......
  • MySQL:一文弄懂时区&time_zone
    https://zhuanlan.zhihu.com/p/448999520你还在被以下问题困扰吗:MySQL的安装规范中应该设置什么时区?JAVA应用读取到的时间和北京时间差了14个小时,为什么?怎么解决?已经运行一段时间的业务,修改MySQL的时区会影响已经存储的时间类型数据吗?迁移数据时会有导致时间类型数据时区......
  • 各类数据库适配mysql
    1.clickhouse:Array(Date)=TEXTArray(DateTime=TEXTArray(FLoat32)=TEXTArray(FLoat64)=TEXTArray(Int16)=TEXTArray(Int32)=TExTArray(Int64)=TEXTArray(Int8)TExTDateTime=DATETIMEAnray(stringD=TExTArray(UInt16)=INTArav(uInt32)=INTArray(UInt64)=INTArr......
  • C#输出helloworld以及定义变量输出变量
    手写第一个C#程序 usingSystem;namespacemyspace{    classxiaoxie    {        staticvoidMain()        {            Console.WriteLine("这是我的第一个程序");        }    }} 赋一个变量,同时输......
  • chatgpt的monica告诉我的关于cmip6的变量标签的解释,牛
    在CMIP6(CoupledModelIntercomparisonProjectPhase6)中,VariantLabel是用于标识不同模型变体的标签。它由四个部分组成,分别是r1i1p1f1。r1表示实验重复次数(runnumber),即同一模型下运行的不同实验的编号。r1表示第一次运行。i1表示初始条件(initialization),即同一实验下使用......
  • Mysql 逗号分隔的字段查询
    二、find_in_set为了解决like存在的问题,还可以使用mysql提供的find_in_set(str,strlist),sql可以这样写:select*fromuserwherefind_in_set('1',hobby_ids);这样mysql就会把hobby_ids的值,按照逗号分隔的一个个元素去匹配。如果我们要匹配多个值要怎么办呢,比如查找喜欢1-篮球......
  • 手机直播源码,android 轮播图(自定义组合控件)
    手机直播源码,android轮播图(自定义组合控件)1.项目gradle添加一下配置:  allprojects{ repositories{ ... maven{url'https://jitpack.io'} } } ​2.module中的gradle添加依赖:  dependencies{   implementation'com.github.truemi:SlideS......
  • 视频直播系统源码,Android 自定义底部导航栏
    视频直播系统源码,Android自定义底部导航栏添加依赖1.项目gradle添加一下配置:  allprojects{ repositories{ ... maven{url'https://jitpack.io'} } }   ​2.module中的gradle添加依赖:  dependencies{   implementation'com.github.tr......