我想首先显示与国家/地区具有相同行数据的行(有一行名为country)。例如,如果有5个结果,其中2个具有“英格兰”的国家,那么它们应该是第一个。我试过了
$mycountry = "england";
mysql_query("SELECT * FROM members where basresvar='yes' ORDER BY country DESC limit 10")
但它并没有像我想的那样对结果进行排序。这样做的正确方法是什么?
答案 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
。因此,当您按降序排序时,国家/地区等于英格兰的行将被放在第一位。
添加第二个排序标准会使所有剩余的国家/地区按英格兰字母排序。