/*用到的表*/
drop
table
ifexists
`friends`;
/*悟空朋友表*/
create
table
`friends` (
`id`
int(3) not
null,/*sql server中不能指定int長度*/
`user_name`
varchar(30) default
null,
`type`
varchar(30) default
null
) engine=innodb default charset=utf8;
insert
into
`friends`
values ('1', '孫悟空', 'friends');
insert
into
`friends`
values ('2', '牛魔王', 'friends');
insert
into
`friends`
values ('3', '蛟魔王', 'friends');
insert
into
`friends`
values ('4', '鵬魔王', 'friends');
insert
into
`friends`
values ('5', '獅駝王', 'friends');
drop
table
ifexists
`qujing`;
/*取經表*/
create
table
`qujing` (
`id`
int(3) not
null,
`user_name`
varchar(30) default
null,
`type`
varchar(30) default
null
) engine=innodb default charset=utf8;
insert
into
`qujing`
values ('1', '唐僧', 'qujing');
insert
into
`qujing`
values ('2', '豬八戒', 'qujing');
insert
into
`qujing`
values ('3', '孫悟空', 'qujing');
insert
into
`qujing`
values ('4', '沙僧', 'qujing');
分組查詢:選出每組前兩名
select d.user_name ,c.timestr,kills
from(
select user_id,timestr,kills,(select
count(*) from
user_kills b where b.user_id=a.user_id and a.kills<=b.kills)as cnt
from user_kills a
group
by user_id,timestr,kills
) c join user1 d on c.user_id=d.id
where cnt<=2
每個人殺怪最多的前兩個日期
select a.user_name,b.timestr,b.kills
from user1 a join user_kills b
on a.id=b.user_id
where user_name=』孫悟空』
order
by b.kills desc
limit 2
查詢出孫悟空殺怪最多的前兩天是哪兩天
注意:在mysql中不支援row_number()函式
優化方式1:採用roe_number函式,進行分割槽排序
優化方式2:
select d.user_name,c.timestr,kills from(
select user_id,timestr,kills,(select
count(*) from user_kills b
where b.user_name =a.user_id and a.kills <=b.kills) as cnt
from user_kills a group
by user_id,timestr,kills ) c join user1 d
on c.user_id=d.id where cnt<=2;
MySQL之分組查詢(GROUP BY)
在 mysql select 語句中,允許使用 group by 子句,將結果集中的資料行根據選擇列的值進行邏輯分組,以便能彙總表內容的子集,實現對每個組而不是對整個結果集進行整合。語法格式如下 group by asc desc 語法說明如下 注意 group by 子句中的各選擇列必須也是 se...
mysql 隨機分組 Mysql 分組選擇
mysql 分組選擇與group concat 在其他的資料庫中我們遇到分組選擇的問題時,比如在分組中計算前10名的平均分 我們可以使用row number over 比較方便的得到。但是在mysql中,問題就被拋了出來,因為mysql並沒有乙個rownum內建資料元組訪問方式。在這裡我提供三種方式...
mysql 分組子 mysql 子選擇和分組
我有兩個表 main id main,field1,過濾器 main logs 5,000萬行 auto inc,id main,路徑 我在尋找以下結果 id main,field1,最常見的路徑 我嘗試了以下查詢 select id main,field1,select path,count as...