嗨,我有一個表如下身份證,學校,地址,城市,州,電話,電子郵件,傳真。有近40個城市。我需要從每個城市選擇1項。任何一個可以指導我mysql查詢此問題
例如
city
a1 30 entries
a2 12 entries
......
a40 36 entries
Pick 1 from each a1,a40
嗨,我有一個表如下身份證,學校,地址,城市,州,電話,電子郵件,傳真。有近40個城市。我需要從每個城市選擇1項。任何一個可以指導我mysql查詢此問題
例如
city
a1 30 entries
a2 12 entries
......
a40 36 entries
Pick 1 from each a1,a40
select * from your_table_name group by state, city
,並隨機選擇
select * from your_table_name group by state, city order by rand()
在** mysql **這是最簡單和最短的問題的答案。 +1來對付downvoter(s)! – knittl 2010-05-03 14:22:29
在MySQL中,你可以簡單地說:
select * from table group by city
我不認爲這是一個好主意:http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html – 2010-05-03 12:53:18
@mark byers:那麼問題在哪裏?該頁面討論標準的sql。我清楚地表明我在談論mysql和mysql中的afaik,可以選擇不彙總它們的列。你得到的行是未指定的,但你得到的值... – knittl 2010-05-03 13:42:41
它說有「使用此功能時,每個組中的所有行應該具有相同的值從GROUP BY部分省略的列。這裏情況不同。 – 2010-05-03 13:46:56
總的來說,我喜歡來處理這些案件有一個加入一個子查詢,如下面的例子:
SELECT s.id, s.school, s.address, s.city, s.phone, s.email, s.fax
FROM schools s
JOIN (SELECT MAX(id) as max_id
FROM schools
GROUP BY city) sub_s ON (sub_s.max_id = s.id);
的JOIN
實際上是限制你的結果設定爲具有鮮明的城市條目。這也假設您想在每個城市有多個條目時選擇ID最高的條目。如果您希望選擇最低的ID,則可以在子查詢中使用MIN()
聚合函數,而不是MAX()
。
+1的解釋,價值比單獨查詢更多。 – lexu 2010-05-03 14:03:13
SELECT DISTINCT city FROM tablename
你想用什麼標準選擇每個城市的哪個入口? – Syntactic 2010-05-03 12:48:39
同一個城市的大多數條目是否具有相同的狀態?你能詳細說明一下嗎? – Syntactic 2010-05-03 12:56:24
好吧,以前10個州各有5-6個城市。我只需要從每個城市中選擇一個條目(每個城市嚴格不超過1個,從50到100個條目)。 – ArK 2010-05-03 13:03:34