我有一个名为L1
的表格,其中有3,000条记录,其中有一个名为town_id
的字段。
town_id
中的 L1
是名为towns
的第二个表中包含数百个城镇名称的数据的整数ID - 字段名称为name
。
我需要从城镇表中获取所有具有L1
记录的不同城镇名称,以便我只选择实际使用的城镇列表而不是列出所有城镇名称。
任何人都可以告诉我如何构建该查询,因为它正在推动我的问题:)
答案 0 :(得分: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
答案 1 :(得分: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;
有趣地发明其他方式......
答案 2 :(得分:1)
也许这会对您有所帮助:http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html - 非常确定您需要INNER JOIN
。