2012-10-18 59 views
2

我有一个名为L1的表,其中有3000条记录,其中有一个名为town_id的字段。从另一个表中选择唯一的名称(名称)?

L1town_id是数据的第二个表的整数ID叫towns含有几百名镇 - 字段名称是name

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

谁能告诉我怎样的结构,查询请,因为它是推动我逼疯了:)

回答

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 
+0

美好的样子先生! –

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; 

有乐趣发明了其他的方式...