首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

每个分类各取10条数据,相同时间下的数据显示在一条记录下,这样的SELECT语句如何写

2012-09-09 
求教:每个分类各取10条数据,相同时间上的数据显示在一条记录上,这样的SELECT语句怎么写?数据库MYSQL表如下

求教:每个分类各取10条数据,相同时间上的数据显示在一条记录上,这样的SELECT语句怎么写?
数据库MYSQL表如下: 
表名:stockdata
ID TIME STOCK_NAME DATA1 DATA2 DATA3 
1 9:30 银行 aaa bbb ccc 
2 9:31 银行 ddd eee fff
.. ...... ... .... .... ....  
11 9:30 证券 2aaa 2bbb 2ccc 
12 9:31 证券 2ddd 2eee 2fff
.. .... .... .... .... ....  
我想要的结果是:按STOCK_NAME这个字段个都取出最新的10条信息。每条记录包含在这个时间上的所有STOCK_NAME的三个数据都展示在一条记录上。请问怎么写。
  银行 证券  
TIME DATA1 DATA2 DATA3 DATA1 DATA2 DATA3  
9:31 ddd eee fff 2ddd 2eee 2fff  
9: 30 aaa bbb ccc 2aaa 2bbb 2ccc 
... ... ... ... ... ... ...  
查询出来的表就是按这样的以时间排序,一条记录上显示每个分类的相同的字段名(DATA1 ,DATA2,DATA3)的数据。


[解决办法]
无环境 未测试:

SQL code
select id, stock_code, real_time,     sum(if(stock_code=991156, buycount, 0)) as buycount,    sum(if(stock_code=991156, bigbuycount, 0)) as bigbuycount,    sum(if(stock_code=991156, waitbuycount, 0)) as waitbuycount,    sum(if(stock_code=881155, buycount, 0)) as buycount,    sum(if(stock_code=881155, bigbuycount, 0)) as bigbuycount,    sum(if(stock_code=881155, waitbuycount, 0)) as waitbuycountfrom stock_datagroup by real_timeorder by real_time desc
[解决办法]
select real_time, 
MAX(if(stock_code=991156, buycount, 0)) as buycount,
MAX(if(stock_code=991156, bigbuycount, 0)) as bigbuycount,
MAX(if(stock_code=991156, waitbuycount, 0)) as waitbuycount,
MAX(if(stock_code=881155, buycount, 0)) as buycount,
MAX(if(stock_code=881155, bigbuycount, 0)) as bigbuycount,
MAX(if(stock_code=881155, waitbuycount, 0)) as waitbuycount
from stock_data group by real_time order by stock_code desc

热点排行