当前位置:  开发笔记 > 编程语言 > 正文

MySQL - 列表结果首先按相同的值排序?

如何解决《MySQL-列表结果首先按相同的值排序?》经验,为你挑选了2个好方法。

我想首先显示与国家/地区具有相同行数据的行(有一行名为country).例如,如果有5个结果,其中2个具有"英格兰"的国家,那么它们应该是第一个.我试过了

$mycountry = "england";
mysql_query("SELECT * FROM members where basresvar='yes' ORDER BY country DESC limit 10")

但它并没有像我想的那样对结果进行排序.这样做的正确方法是什么?



1> fthiella..:

您可以这样编写查询:

select *
from
  members
where
  basresvar='yes'
order by
  case when country='england' then 1 else 2 end
limit 10

case...when当country ='england'时,语句将返回1,否则返回2,那么由于我们按此语句排序,因此将把country ='england'的行放在顶部,将其他行放在底部.



2> Barmar..:

使用

ORDER BY country = "England" DESC, country

当比较为真时,值为1; 当它是假的时候,价值是0.因此,当您按降序排序时,国家/地区等于英格兰的行将被放在第一位.

添加第二个排序标准会使所有剩余国家/地区按英格兰字母排序.


是的,它非常相似,它只是利用了MySQL代表布尔值作为数字的事实,所以你不必用`CASE`拼出它.
推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有