首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL中的if条件,用于排序距离和检查状态

问MYSQL中的if条件,用于排序距离和检查状态
EN

Stack Overflow用户
提问于 2012-10-09 05:11:03
回答 1查看 325关注 0票数 0

我正在写一个代码来显示最近的商店位置和他们的开放状态(比如商店是按月营业还是关闭)。我正在使用以下代码,这是工作良好的距离,但我想排序我的列表,以显示其打开状态的数据,然后排序列表与他们的距离。您可以帮助只是把我的PHP下面的if条件代码到查询我有2列'start_date'与值'int'为月和'end_date' ...我正在使用下面的php代码来在html中显示状态。您能否帮助我改进我的查询,使其先按打开状态排序结果,然后再按距离排序

代码语言:javascript
复制
$currMonth = date('m');

$query="SELECT *,
            6371 * 2 * ASIN(SQRT( POWER(SIN(($lat - latitude) * pi()/180 / 2), 2) +     COS($lat * pi()/180) * COS(latitude * pi()/180) *
            POWER(SIN(($long - longitude) * pi()/180 / 2), 2) )) as
            distance, $currMonth >= start_date as open FROM table_name 
            GROUP BY Id HAVING distance <= $km ORDER by distance ASC ,open ASC";


if (($currMonth >= $row['start_date']) && ($currMonth <= $row['end_date']))
$Status = "open";
else
$Status = "close";
EN

回答 1

Stack Overflow用户

发布于 2012-10-09 22:50:07

替换查询的此行

代码语言:javascript
复制
$currMonth >= start_date as open FROM table_name

有了这个:

代码语言:javascript
复制
IF($currMonth >= start_date AND $currMonth <= end_date, 'open', 'closed') as open FROM table_name

它使用一个内联IF条件,就像这样- IF(condition, true_result, false_result)

如果条件为真,则结果为true_result。如果条件为false,则结果为false_result。

如果您想先按打开状态排序,然后按距离排序,则还需要更改ORDER子句的顺序:

代码语言:javascript
复制
... ORDER BY open ASC, distance ASC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12789536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档