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」という名前の列も抽出する必要がありますが、各 ID が異なるため、DISTINCT が台無しになります。

上記と同じUNIQUEセットのレコードを取得するだけでなく、各レコードの「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

異なる郵便番号で重複する可能性があるため、city、region1、および region2 の個別のセットを取得したいと考えています。これは、現在のクエリが行います。しかし、これは参照として選択したレコードの DB に入れるものなので、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

あなたはあなたが求めているように見えることをすることはできません:

入力データ:

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はなくなります。あなたは述べます

上記と同じUNIQUEレコードのセットを取得するだけでなく、各レコードの「id」も取得するにはどうすればよいですか。

ただし、最初に返される行には3つの可能なIDがあり、「各レコードの「id」」を要求することは意味がありません。

編集

たとえば、最小のIDが必要な場合は、次のように実行できます。

select min(id),city,region1,region2 from ... where ... group by city,region1,region2
于 2012-04-07T05:42:03.197 に答える
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 に答える
-1

代わりにグループ化を使用

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;

これにより、必要なものが返されます。しかし、db レコードから、都市 = 'A' の場合、最初に見つかったレコードが常に選択され、この都市には多くのレコードがあり、最初に見つかったレコードが選択され、その ID が返されます。

于 2012-04-07T06:17:14.833 に答える