mysql 预编译语句_Mysql预编译

背景:

需要根据集群个数查询集群相关信息,但是集群个数是个动态值,那么应该怎么样办?

分析:

1)先查询出distinct clusterName的个数

2)然后根据查询出的个数来进行limit

使用了MySQL里面的两个知识:

1)预编译,语法如下

# 定义预处理语句

PREPARE stmt_name FROM preparable_stmt;

# 执行预处理语句

EXECUTE stmt_name [USING @var_name [, @var_name] ...];

# 删除(释放)定义

{DEALLOCATE | DROP} PREPARE stmt_name;

2)变量

set语句可用于向系统变量或用户变量赋值,针对用户变量的定义如下:

SET @var_name = expr [, @var_name = expr] ...

也可使用select语句来定义:

SELECT @var_name := expr [, @var_name = expr] ...

用户变量:以"@"开始,形式为"@var_name",以区分用户变量及列名。

它可以是任何随机的,复合的标量表达式,只要其中没有列指定

处理:

--定义查询集群信息的预编译

PREPARE s1 FROM 'select distinct(clusterName), Version, ts from m_fds_version order by ts desc limit ?';

--定义集群个数变量

select @limit_num:=count(distinct(clusterName)) from m_fds_version;

--执行预编译语句

EXECUTE s1 USING @limit_num;

--删除预编译

DROP PREPARE s1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值