列出城市的MySql查询

时间:2014-06-15 16:07:07

标签: mysql sql

我有一个表fs_city,系统会检测用户的国家/地区,例如美国。然后,如果用户输入内容,它将自动填写城市名称。

例如," Ne"将自动完成"纽约" ,"新墨西哥","内布拉斯加州"等。我想要做的是首先放置来自给定国家(正在检测)的城市,然后列出来自其他国家的城市。

这是我当前的Sql查询:

SELECT 
    ci.city_id,
    ci.country_code,
    ci.city,
    ci.region,
    co.country
FROM 
    fs_city ci,fs_country co
WHERE
    ci.city LIKE "'.$city.'%"
AND 
    ci.country_code LIKE :country
AND
    co.code = UPPER(ci.country_code)
ORDER BY 
    ci.city 
ASC LIMIT
    0,20

所以,我想要添加到这个SQL查询中的是从其他国家/地区选择城市,并将其列在检测到的国家/地区(其国家/地区代码如:国家/地区)的城市中,其结果是总结果数为20。

如果它从我的国家返回2个城市,以" Ne"开头,例如:"纽约"和内布拉斯加城市",它必须列出其他国家的18个其他城市,尊重字母顺序。

所有这一切都在一个查询中。

1 个答案:

答案 0 :(得分:3)

您可以通过摆弄order by子句来完成此操作:

SELECT ci.city_id, ci.country_code, ci.city, ci.region, co.country
FROM fs_city ci join
     fs_country co
     ON co.code = UPPER(ci.country_code)
WHERE ci.city LIKE "'.$city.'%"
ORDER BY (ci.country_code LIKE :country) DESC,
         ci.city 
LIMIT 0, 20;

ORDER BY有两个表达式。第一个将在国家/地区代码匹配时返回1,否则返回0DESC将匹配放在第一位。第二个是城市。

请注意,我还修复了查询以使用显式join语法。