我有一个名为L1
3,000 条记录的表,其中有一个名为town_id
.
town_id
inL1
是towns
包含数百个城镇名称的第二个表中数据的整数 ID - 字段名称是name
.
我需要从有记录的城镇表中获取所有不同的城镇名称,L1
以便我只选择实际使用的城镇列表,而不是列出所有城镇。
谁能告诉我如何构造该查询,因为它使我难以忍受:)
我有一个名为L1
3,000 条记录的表,其中有一个名为town_id
.
town_id
inL1
是towns
包含数百个城镇名称的第二个表中数据的整数 ID - 字段名称是name
.
我需要从有记录的城镇表中获取所有不同的城镇名称,L1
以便我只选择实际使用的城镇列表,而不是列出所有城镇。
谁能告诉我如何构造该查询,因为它使我难以忍受:)
将一个表连接到另一个表的最快方法通常是连接。如果您正在编写查询,最好阅读并了解连接的实际工作方式,因为它是关系数据库的核心。加入这两个表后,您可以执行 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
有几种写法。最简单的,也许是:
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;
享受发明其他方式的乐趣......
也许这会对您有所帮助:http: //www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html - 很确定您想要一个INNER JOIN
.