作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我创建了一个房地产网站,我希望按照列表的最后更新和完整性对列表进行排序。所以我一直想弄清楚如何结合最近更新的列表按mysql中的字段(completion_score)进行排序。完成分数将采用 100 分制,0 分为差,100 分为完美完成。当列表被添加和更新并保存在 mysql 数据库中时,我将计算完成分数。我猜想我将不得不以某种方式将日期和 completion_score 结合起来以得出总数,但我不确定如何在一个 SELECT 中执行此操作。
目前我正在使用这个(显然不考虑完成分数):
ORDER BY ".$wpdb->prefix."fsrep_listings.listing_featured DESC, ".$wpdb->prefix."fsrep_listings.listing_last_updated DESC
我在想,如果是上周完成的,完成分数加30分,如果是上个月完成的,完成分数加20分,如果是上个月完成的,完成分数加20分。最后三个月我会在完成分数上加 10 分。然后我可以根据这个更新的完成分数来订购它。问题是我如何让它每天更改以调整分数。
听取 Mark 的建议,我编写了以下代码:
ORDER BY $wpdb->prefix.'fsrep_listings.listing_score' + if($wpdb->prefix.'fsrep_listings.listing_last_updated' > NOW()-INTERVAL 1 WEEK,30,if($wpdb->prefix.'fsrep_listings.listing_last_updated' > NOW()-INTERVAL 1 MONTH,20,if($wpdb->prefix.'fsrep_listings.listing_last_updated' > NOW()-INTERVAL 3 MONTHS,10,0)))' DESC';
然后我收到以下解析错误:语法错误,意外的 T_IF in/home/...
最佳答案
你的想法听起来不错。为什么不用它运行?
ORDER BY completion_score + IF(date > NOW()-INTERVAL 1 WEEK,30,IF(date > NOW()-INTERVAL 1 MONTH,20,IF(date > NOW()-INTERVAL 3 MONTHS,10,0))) DESC
不管怎么说,都是那种效果。
关于PHP:高级 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7775610/
我是一名优秀的程序员,十分优秀!