分享到:
发表于 2008-12-22 09:41:48 楼主 | |
table1 id f_id name 1 1 A 2 2 B 3 3 C 4 1 D 5 1 E 6 2 F 7 1 G 8 3 H 9 4 I ...... 還有很多數據,f_id大概指的是分類ID,可難某個分類(1)的數據特別多現在我需要查詢出最新加入的100條記錄,如果用簡單的查詢會出現80條全是分類1的記錄現在我需要做的是查詢出的最新加入的100條記錄中,同樣分類的記錄最多只能20條,比如最新的100條中有80條是分類1的,只取20條,差額再找往前的數據來補,總共顯示出去一共是100條,這樣數據就是分均一點請問有沒有大大知道這個應該怎麼寫? |
|
楼主热贴 |
发表于 2008-12-22 09:41:48 1楼 | |
没有测试 你再看一下 select t.id, t.f_id, t.name from table as t where exists (select 1 from table where t.f_id = f_id and id > t.id group by f_id having count(id) < 20) order by id, f_id limit 0, 100 |
|
发表于 2008-12-22 09:41:48 2楼 | |
关注继续,不敢浏览,领导在虎视眈眈 |
|
个性签名:
|
发表于 2008-12-22 09:41:48 3楼 | |
牛人~~非常感谢~~~我之前在子查询用limit 20他说不支持。。。。原来可以用having~~不过发现这个查询非常慢,我的数据才200多W条。。。后来想了一下还是不能用语句查出来,直接用程式把数据从新到旧一条一条输出,直到找到合适的100条再break~~~这样快了很多~~~ |
|
发表于 2010-04-13 21:08:48 4楼 | |
学习 | |
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见