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

时间:2016-01-01 16:26:33

标签: php mysql

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

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

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

2 个答案:

答案 0 :(得分:5)

您可以这样编写查询:

select *
from
  members
where
  basresvar='yes'
order by
  case when country='england' then 1 else 2 end
limit 10
当国家='英格兰'时,case...when语句将返回1,否则返回2;然后,由于我们按此语句排序,因此将把具有country ='england'的行放在顶部,而将其他行放在底部。

答案 1 :(得分:5)

使用

ORDER BY country = "England" DESC, country

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

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