2010-08-02 75 views
2

我有兩個表:景點和城市。景點包含一個名爲city的列,它是城市表中id的參考。我想要形成一個MySQL的聲明,告訴我哪些城市最吸引人。幫助形成一個SQL語句

我知道我可以做:

SELECT COUNT(*) as `number` 
FROM `attractions` 
WHERE `city` = XX 

...得到多少景點都在一個城市的計數,但有一個說法是可以指望所有的景點在每一個城市,按景點數量降序返回結果?

回答

3
SELECT City.Name, COUNT(Attractions.City) as AttractionCount 
FROM City 
LEFT OUTER JOIN Attractions ON City.City = Attractions.City 
GROUP BY City.Name 
ORDER BY COUNT(Attractions.City) DESC 
+1

也許你應該用City.id替換City.City?此外,由City.id而不是City.Name組成,因爲可能有多個同名的城市(在不同的省份或州)。 – 2010-08-02 02:15:10

+1

是的,這是一個不錯的選擇。但是,問題表明景點中的列被稱爲城市。 – bobs 2010-08-02 02:19:30

+0

工作完美!謝謝!而且通過id而不是名稱進行分組確實更有意義。 – Jarred 2010-08-02 02:50:43