1
我知道足够的SQL来编写基本的SELECT
和UPDATE
s。我在努力JOIN
s更新结果GROUP BY
我想更新犯罪表中的'县'字段。我正在使用一个zip_xref表,它会给我县名。问题在于数百个城市在多个县,我想更新最普遍的县的表,所以我的子查询必须按照大小排列县。
我写这个是为了找到按照每个县的邮政编码排列的县名。
SELECT DISTINCT CountyName AS counties, COUNT(*) AS numZips
FROM Zip_XRef WHERE (CityName = 'Aurora') AND (StateName = 'Colorado')
GROUP BY CountyName ORDER BY numZips DESC
我知道这个更新不起作用,它只是想法。
UPDATE crime_table_08 AS c
SET county =
(SELECT TOP 1 DISTINCT CountyName, COUNT(*) AS numZips
FROM Zip_XRef AS z
WHERE RTRIM(z.StateName) = RTRIM(c.State) AND RTRIM(z.CityName) = RTRIM(c.city)
GROUP BY CountyName ORDER BY numZips DESC
)
我在想,我需要创建一个临时表,然后调用它来更新C,我不能完全得到我的头周围的逻辑。任何帮助不胜感激。
或者,有没有人认为有更好的办法?
+1为获得一个合理的from子句 – 2010-11-09 23:36:37
对不起,应该提到,我在WIN服务器2003/SQL 2000这将是什么样的作为内加入? – royhink 2010-11-10 18:47:58
不能有相关的内部联接(即,具有引用'c'别名中的字段的WHERE子句的联接)。你可以使用子查询,但它会很快变得非常混乱。稍后我会试着发布一个解决方案,当我花一分钟时间看看它。 – 2010-11-10 18:51:10