mysql 巧用存储过程
2024-10-21 06:07:48
根据距离排序
CREATE DEFINER=`ln` PROCEDURE `Proc_4`(IN `lon1` double,IN `lat1` double,IN `PageStart` int,IN `PageStep` int,IN `type` int,IN `uniacid1` int)
BEGIN
select merchname,address,lng,lat,ser.*, ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( lat1 * PI() / 180 - lat * PI() / 180 ) / 2 ), 2 ) + COS(lat1 * PI() / 180) * COS(lat * PI() / 180) * POW( SIN( ( lon1 * PI() / 180 - lng * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS juli from merch_service as ser
inner join merch on ser.merchid=merch.id
where merch.`status` in (1,3)
and ser.type=type
and ser.uniacid=uniacid1
and merch.uniacid=uniacid1
ORDER BY juli asc
LIMIT PageStart,PageStep;
END
复杂点可以用
CREATE DEFINER=`ln` PROCEDURE `Proc_3`(IN `lon1` double,IN `lat1` double,IN `PageStart` int,IN `PageStep` int,IN `type` varchar(20),IN `uniacid` int,IN `iscommand` int,IN `distance` int)
BEGIN
IF iscommand = 0 THEN
set @isCommand= ' order by juli asc';
ELSE
set @isCommand= ' order by isrecommand desc ,juli asc';
END IF;
IF distance = 0 THEN
set @distance= ' ';
ELSE
set @distance= CONCAT(' and `juli` <= ', distance);
END IF;
set @type = CONCAT('%',type,'%');
set @_where = " where `status` IN(1,3)";
set @_where = CONCAT(@_where,' AND `diyformdata` like "',@type,'"');
set @_where = CONCAT(@_where,' AND `uniacid` = ', uniacid);
set @_where = CONCAT(@_where,@distance);
set @sql = CONCAT(
"SELECT * FROM
(SELECT
*, ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( ",lat1," * PI() / 180 - lat * PI() / 180 ) / 2 ), 2 ) + COS(",lat1," * PI() / 180) * COS(lat * PI() / 180) * POW( SIN( ( ",lon1," * PI() / 180 - lng * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS juli FROM merch)a ");
set @sql = CONCAT(@sql,@_where,@isCommand, ' limit ', PageStart, ',', PageStep);
prepare stmt from @sql; -- 预编释一下。 “stmt”预编释变量的名称,
execute stmt; -- 执行SQL语句
deallocate prepare stmt; -- 释放资源 END
最新文章
- GDUFE-OJ 1359校庆素数 埃氏筛法
- C#并行编程-Parallel
- 怎样打开64位 Ubuntu 的32位支持功能?
- svn安装【转载】
- redis使用日志(一) 安装,调试
- 谈谈final、finally、finalize的区别
- 使用CATransition实现页面的“从左向右” “从右向左”的动画
- 详解Android Handler的使用
- webapi中的Route的标签的命名参数name的使用
- shell解析命令行的过程以及eval命令
- NCS8801S芯片RGB/LVDS转EDP功能简介
- Dubbo分布式服务子系统的划分
- Entity Framework 异常: &#39;OFFSET&#39; 附近有语法错误。\r\n在 FETCH 语句中选项 NEXT 的用法无效。
- si_da
- Python自学:第二章 Python之禅
- Tex_Err:缺失wlscirep.cls
- ES6常用对象操作
- [转]Apache 监听端口失败,selinux惹的祸
- .NET RSA解密、签名、验签
- MVC4升级到MVC5未能加载文件或程序集System.Web.WebPages.Razor, Version=3.0.0.0
热门文章
- 负载均衡LVS
- vue定义全局变量和全局方法
- java中String.valueOf(obj)、(String)obj与obj.toString()有什么区别
- FLV文件格式解析(转)
- linux应用之nginx的安装及配置(centos)
- MySQL丨分页查询
- hdu-5742 It&#39;s All In The Mind(数学)
- vue.js created函数注意事项
- AutoIt:应用WMI接口,打印远程机器安装的所有应用程序
- Ubuntu无法访问Windows磁盘, 且无提示信息