84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
select id, value from test;查询结果如下id valueyy 123zz 234zz 456
仅想保留id字段的第一条记录,在5.7以下版本中使用"select id, value from test group by id"即可得到如下结果:yy 123zz 234
但在MySQL 5.7中该如何得到所需结果呢?该语句在5.7中非法
认证高级PHP讲师
修改MySQL設定檔中的sql_mode,除去ONLY_FULL_GROUP_BY,如沒有sql_mode,則加上一行
sql_model=
SELECT id, value FROM (SELECT id, value FROM test ORDER BY id ) AS b GROUP BY id
說句題外話:用慣PostgreSQL的我突然有一天開始用MySQL,發現類似樓主這種非key不用聚合的不嚴謹的SQL語句居然能成立,心中一萬隻草泥馬奔騰。 後來發現,在PostgreSQL用著跟家常便飯一樣的窗口函數竟然MySQL根本沒有,徹底無語。 好吧,還是提供點有用的東西,在MySQL中實作rank的視窗函數:http://stackoverflow.com/questions/3333665/rank-function-in-mysql
修改MySQL設定檔中的sql_mode,除去ONLY_FULL_GROUP_BY,如沒有sql_mode,則加上一行
SELECT id, value FROM (SELECT id, value FROM test ORDER BY id ) AS b GROUP BY id
說句題外話:
用慣PostgreSQL的我突然有一天開始用MySQL,發現類似樓主這種非key不用聚合的不嚴謹的SQL語句居然能成立,心中一萬隻草泥馬奔騰。
後來發現,在PostgreSQL用著跟家常便飯一樣的窗口函數竟然MySQL根本沒有,徹底無語。
好吧,還是提供點有用的東西,在MySQL中實作rank的視窗函數:
http://stackoverflow.com/questions/3333665/rank-function-in-mysql