根据距离排序

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

最新文章

  1. GDUFE-OJ 1359校庆素数 埃氏筛法
  2. C#并行编程-Parallel
  3. 怎样打开64位 Ubuntu 的32位支持功能?
  4. svn安装【转载】
  5. redis使用日志(一) 安装,调试
  6. 谈谈final、finally、finalize的区别
  7. 使用CATransition实现页面的“从左向右” “从右向左”的动画
  8. 详解Android Handler的使用
  9. webapi中的Route的标签的命名参数name的使用
  10. shell解析命令行的过程以及eval命令
  11. NCS8801S芯片RGB/LVDS转EDP功能简介
  12. Dubbo分布式服务子系统的划分
  13. Entity Framework 异常: &#39;OFFSET&#39; 附近有语法错误。\r\n在 FETCH 语句中选项 NEXT 的用法无效。
  14. si_da
  15. Python自学:第二章 Python之禅
  16. Tex_Err:缺失wlscirep.cls
  17. ES6常用对象操作
  18. [转]Apache 监听端口失败,selinux惹的祸
  19. .NET RSA解密、签名、验签
  20. MVC4升级到MVC5未能加载文件或程序集System.Web.WebPages.Razor, Version=3.0.0.0

热门文章

  1. 负载均衡LVS
  2. vue定义全局变量和全局方法
  3. java中String.valueOf(obj)、(String)obj与obj.toString()有什么区别
  4. FLV文件格式解析(转)
  5. linux应用之nginx的安装及配置(centos)
  6. MySQL丨分页查询
  7. hdu-5742 It&#39;s All In The Mind(数学)
  8. vue.js created函数注意事项
  9. AutoIt:应用WMI接口,打印远程机器安装的所有应用程序
  10. Ubuntu无法访问Windows磁盘, 且无提示信息