php – 使用复杂的ORDER BY进行MySQL查询

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 使用复杂的ORDER BY进行MySQL查询脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下查询

SELECT id,tITle,adcontent,adtargetURL,locationpage,locationarg,locationid,displayorder,visible,schedstart,schedstop,created,modified,createdby,modifiedby
From ads            
ORDER BY locationpage,title

我需要按以下方式订购字段:

>按位置排序,首先选择值为’all’的任何字段,然后按升序排序
>然后通过locationarg首先使用任何NULL或空字符串值,然后在asc中使用其余值
>然后通过locationid首先使用任何NULL或0值,其余部分在asc中
>并在其中,首先按’1’的显示顺序排序,然后按NULL,然后按’2’排序
>最后,如果其中任何一个都设置为相同,则通过ASC中的标题

我的ORDER BY应该如何实现这一目标?

这是我到目前为止:(从下面更新)

ORDER BY locationpage='all',locationpage ASC,locationarg ASC,locationid ASC,displayorder='1',ISNULL(displayorder),displayorder='2',title ASC

……但这不起作用!

解决方法

您最好的选择是使用一个计算字段,根据您的规则生成订单ID ..我稍后会添加一个示例..

select
case
  when locationpage = "all" then 10
  when ISNULL(locationarg)  then 20
  ....
  else 50 
end as OrderID,id,....

From ads            

ORDER BY OrderID DSEC

脚本宝典总结

以上是脚本宝典为你收集整理的php – 使用复杂的ORDER BY进行MySQL查询全部内容,希望文章能够帮你解决php – 使用复杂的ORDER BY进行MySQL查询所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。