我覺得FGraviton接近,但我會寫這樣的查詢:
SELECT *
FROM myTable
GROUP BY state
的DISTINCT並不需要你想要的結果。在另一方面,我可能更喜歡這樣的:
SELECT DISTINCT state
FROM myTable
ORDER BY state;
再次,我們需要更好地瞭解你正在嘗試做的,所以我們可以真正談論如何正確設計數據和查詢火雞。
現在,請記住,破折號的答案會返回碰巧具有'NY'作爲其狀態的行的所有獨特變體。換句話說,可以想象(實際上,理想情況下,假設設計和數據完整性很好),在本例中,不會用DISTINCT *去除單行,因爲每行都會(應該/可能)具有某種類型的變體,可能在名稱列中。同樣,DISTINCT *和WHERE狀態='NY'條款不會相互交談。 DISTINCT只會對查詢的結果做出不同的處理。 DISTINCT無法知道你只想要不同的狀態。
MySQL文檔說DISTINCT c1,c2,c3等同於GROUP BY c1,c2,c3。
我敢肯定,如果我們能夠以某種方式弄清楚你想要做什麼,我們可以幫助你。
感謝您提供的其他信息。在此基礎上的附加信息,這裏就是我會做:
SELECT *
FROM geo_locations
WHERE city = 'CITYNAMEHERE'
GROUP BY city, latitude, longitude
ORDER BY city ASC;
當然,這假定每個城市都有一個唯一的真/緯度中。如果有疑問,你可能需要在你的GROUP BY子句中圍繞你的緯度/經度,就像這樣。
SELECT *, round
FROM geo_locations
WHERE city = 'CITYNAMEHERE'
GROUP BY city, round(latitude, 2), round(longitude, 2)
ORDER BY city ASC;
因此,您只需要返回每個狀態的一條記錄?你想如何決定哪一個? – Taymon
表是否有主鍵? –
好的問的問題。你確定你想要*欄嗎?你爲什麼不選擇「國家」? –