1

我有以下查询效果很好。

 SELECT DISTINCT city,region1,region2 from static_geo_world where country='AU' AND
 (city LIKE '%geel%' OR region1 LIKE '%geel%' OR region2 LIKE '%geel%' OR region3 LIKE '%geel%' OR zip LIKE 'geel%') ORDER BY city;

我还需要提取一个名为“id”的列,但这会弄乱 DISTINCT,因为每个 ID 都不同。

我怎样才能获得与上述相同的唯一记录集,同时又获得每条记录的“id”?注意:有时我可以返回几千条记录,因此无法查询每条记录。

任何想法都会非常受欢迎......

例子:

表可能有以下

 ID Country zip  region1        region2  region3 City
 1  AU      3323 geelong        victoria         Geelong
 2  AU      3324 geelong        victoria         Geelong
 3  AU      3325 Geelong North  victoria         Geelong

我想获得不同的城市、区域 1 和区域 2 集,因为不同的邮政编码可能有重复。这是当前查询所做的。但我也想获得 ID,因为这是我将把所选记录放入数据库中作为参考的 ID。

想要的结果:

我希望能够获得独特的 'city,region1,region2

 geelong geelong victoria
 geelong geelong north victoria

初始查询得到这些结果

但我也想知道已返回记录的 ID。我将在用户配置文件中使用此 ID(存储在 DB 中)。例如:

 1 geelong geelong victoria
 3 geelong geelong north victoria

希望这能更好地解释它。只需要包含返回的 Distinct 记录 ID 即可。

4

3 回答 3

0

我没有检查过这个但不会这样工作:

SELECT DISTINCT (city,region1,region2), ID from static_geo_world where country='AU' AND
 (city LIKE '%geel%' OR region1 LIKE '%geel%' OR region2 LIKE '%geel%' OR region3 LIKE '%geel%' OR zip LIKE 'geel%') ORDER BY city;

希望这有效!

于 2012-04-07T05:30:28.603 回答
0

你不能做你似乎要求的事情:

输入数据:

ID  City   Region1  Region2
--- ------ -------- --------
 1  geel1  geel2    geel3
 2  geel1  geel2    geel3
 3  geel4  geel5    geel6
 4  geel1  geel2    geel3

查询select distinct city,region1,region2返回

City   Region1  Region2
------ -------- --------
geel1  geel2    geel3
geel4  geel5    geel6 

删除重复行后,行不再有唯一 ID。你说

如何获得与上述相同的唯一记录集,但也获得每条记录的“id”

但是对于第一个返回的行,有三个可能的 ID,并且要求“每条记录的 'id'”是没有意义的。

编辑

如果你只是想要最低的 ID,你可以这样做:

select min(id),city,region1,region2 from ... where ... group by city,region1,region2
于 2012-04-07T05:42:03.197 回答
-1

改用 group by

SELECT id , city,region1,region2 from static_geo_world where country='AU' AND
(city LIKE '%geel%' OR region1 LIKE '%geel%' OR region2 LIKE '%geel%' OR region3 LIKE     '%geel%' OR zip LIKE 'geel%') ORDER BY city group by city;

这将返回您需要的内容。但是从数据库记录中它总是会选择找到的第一个记录意味着如果 city = 'A' 并且这个城市有很多记录,它将选择找到的第一个记录并返回它的 id

于 2012-04-07T06:17:14.833 回答