2

L1というフィールドを持つ 3,000 レコードを含む というテーブルがありますtown_id

town_idinL1は、数百の町名を含む という 2 番目のテーブルのデータの整数 IDです。townsフィールド名はnameです。

L1すべての町を一覧表示するのではなく、実際に使用されている町のリストのみを選択できるように、レコードが含まれているすべての個別の町名を towns テーブルから取得する必要があります。

誰かがそのクエリを構築する方法を教えてもらえますか?それは私を壁に押し上げているので:)

4

3 に答える 3

2

あるテーブルを別のテーブルに接続する最も速い方法は、通常結合です。クエリを作成している場合は、リレーショナル データベースの中心であるため、結合が実際にどのように機能するかを読んで理解することをお勧めします。2 つのテーブルを結合したら、GROUP BY を実行して、すべて共通のフィールド値 (町名など) を共有する一連のレコードをまとめることができます。したがって、次のことができます。

select towns.name from towns inner join L1 on L1.town_id = towns.id group by towns.name

しかし、異なる値を取得するだけで、代わりに「distinct」演算子を使用するのが一般的です。

select distinct towns.name from towns inner join L1 on L1.town_id = towns.id
于 2012-10-18T05:35:34.293 に答える
1

書き方はいくつかあります。おそらく、最も単純なのは次のとおりです。

SELECT Name
  FROM Towns
 WHERE ID IN (SELECT Town_ID FROM L1)

もう一つは:

SELECT DISTINCT T.Name
  FROM Towns AS T
  JOIN L1 ON T.ID = L1.Town_ID;

他の方法を発明して楽しんでください...

于 2012-10-18T05:35:54.950 に答える
1

おそらくこれが役に立ちます: http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html - INNER JOIN.

于 2012-10-18T05:36:15.290 に答える