2

我有一个名为L13,000 条记录的表,其中有一个名为town_id.

town_idinL1towns包含数百个城镇名称的第二个表中数据的整数 ID - 字段名称是name.

我需要从有记录的城镇表中获取所有不同的城镇名称,L1以便我只选择实际使用的城镇列表,而不是列出所有城镇。

谁能告诉我如何构造该查询,因为它使我难以忍受:)

4

3 回答 3

2

将一个表连接到另一个表的最快方法通常是连接。如果您正在编写查询,最好阅读并了解连接的实际工作方式,因为它是关系数据库的核心。加入这两个表后,您可以执行 GROUP BY 将一堆记录折叠在一起,这些记录都共享一个共同的字段值(如城镇名称)。所以你可以这样做:

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

但为了获得不同的值,人们通常选择使用“不同”运算符:

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 回答