0

我正在处理需要地址信息的用户注册表单。

我有一张表,其中包含大约 120 万个国家/州/城市/邮编条目,涵盖整个世界。

给定一个国家,我想选择该国家的所有州。使用以下查询和“US”作为示例查询,我得到大约 49,000 条记录,我只想要 50 条……每个州一条!)

SELECT state FROM locales WHERE country='US'

结果如下所示:

Alaska
Alaska
Alaska
Alaska
Alaska

其中代表:

Akutan, Alaska
Cold Bay, Alaska
False Pass, Alaska
King Cove, Alaska
Sand Point, Alaska

我只想要一个阿拉斯加,一个科罗拉多,一个乔治亚……

同样,给定一个州,我想选择该州的所有城市并给定一个城市,该城市的所有拉链。

我需要如何编写查询来限制这一点,我需要如何设置索引来优化这些查询?

4

4 回答 4

1

使用 DISTINCT 限制重复条目。

SELECT DISTINCT state FROM locales WHERE country='US'
于 2013-04-09T19:13:23.570 回答
1

DISTINCT 将帮助您:

SELECT DISTINCT state FROM locales WHERE country='US'
于 2013-04-09T19:13:26.763 回答
0
SELECT DISTINCT state FROM locales WHERE country='US' LIMIT 50;

给定一个州,我想选择该州的所有城市并给定一个城市,该城市的所有拉链。再次假设您只想要其中 50 个的列表(如果您想要所有其他人,请删除 LIMIT 50):并将下面的字段替换为表中适当的列名。

SELECT DISTINCT state, city, zip FROM locales WHERE country='US' LIMIT 50;

如果您想要前 50 个州的城市和邮政编码列表:

SELECT state, city, zip FROM locales WHERE country='US' and state in (SELECT DISTINCT state FROM locales WHERE country='US' LIMIT 50);
于 2013-04-09T19:14:24.887 回答
0

将此与限制一起使用

SELECT DISTINCT state FROM locales WHERE country='US' LIMIT 0,50

于 2013-04-09T19:17:12.527 回答