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;

 

 

上一篇:PHP访问MySQL你用对了么?


下一篇:c语言学习笔记===函数