精华内容
下载资源
问答
  • 比如每个班级成绩第一的学生等等 oracle 和 sqlserver支持函数,mysql不行 这里给一个粗暴的方法: 两个行数 GROUP_CONCAT(A ORDER BY B)和substring_index 思路: 1、GROUP_CONCAT(fA ORDER BY B) 按照...
    select row_number() over(partition by A order by B ) as rowIndex from table

    比如取每个班级成绩第一的学生等等

    oracle 和 sqlserver支持函数,mysql不行

    这里给一个粗暴的方法:

    两个行数

    GROUP_CONCAT(A ORDER BY B)和substring_index

    思路:

    1、GROUP_CONCAT(fA ORDER BY B) 按照条件排序后拼装字段,默认逗号,4“,”分隔

    2、substring_index 取第一个逗号前的数,如果按照成绩降序排列,就能取到第一名的
    substring_index(GROUP_CONCAT(f.id ORDER BY f.dzrq DESC,fz.faid desc),',',1)

    涉及复杂的逻辑可能需要自定义函数了

    展开全文
  • select * from table_name where column_name=#{xxx} order by column_name limit 1 ; select * from table_name where column_name=#{xxx} order by ...比如 limit 3,是从查出来的结果中 前3数据; 而limit 0,3 是

    select * from table_name where column_name=#{xxx} order by column_name limit 1 ;
    select * from table_name where column_name=#{xxx} order by column_name limit 0,1;

    limit 1 与 limit 0,1 是一样的!
    换句话说,

    比如 limit 3,是从查出来的结果中取 前3条数据;
    而limit 0,3 是取
    第0,
    第1,
    第2条 数据,
    也是三条数据

    所以 LIMIT n 等价于 LIMIT 0,n

    展开全文
  • oracle和mysql分组排序取第一条数据

    千次阅读 2018-12-28 13:34:38
    查每个人的Orderstr 是1 的数据,并保证name不重复 oracle select *  from (SELECT a.*, row_number() over(partition by ida order by orderstr) rn  FROM (select orderstr, name, ida from test) a ) where.....

    场景

    需求

    查每个人的Orderstr 是1 的数据,并保证name不重复

    oracle

    select *
      from (SELECT a.*, row_number() over(partition by ida order by orderstr) rn
              FROM (select orderstr, name, ida from test) a )
    where rn = 1 ;

    结果

     

    mysql

    按 员工号STAFF_ID 分组 按  时间START_TIME  排序 取每个员工最新数据

    select SUBSTRING_INDEX(group_concat(STAFF_ID order by START_TIME asc),',',1) as STAFF_ID,START_TIME
    from t_acc_user_accommodation a GROUP BY  STAFF_ID;

     

     

     

     

    展开全文
  • mysql group by 函数 分组后排序取第一条数据 select aa.* from 你的操作的表名 as aa right join ( select 分组的那一列列名, max(排序的那一列列名+0) as max from 你的操作的表名 group by 分组的那一列列名 ...

    mysql group by 函数 分组后排序取第一条数据

    select aa.*
    from 你的操作的表名 as aa
    right join (
    	select 分组的那一列列名, max(排序的那一列列名+0) as max
    	from 你的操作的表名
    	group by 分组的那一列列名
    	
    ) as bb
    on bb.max = aa.排序的那一列列名and bb.分组的那一列列名 = aa.分组的那一列列名
    

    为什么max(排序的那一列列名+0)这里要“+0” 因为再我的这个表中 排序的那一列列名 不是数组类型 是varchar 所以需要通过 “+0” 来将其转换成int类型 进行取最大值 (这个是看个人需求)

    我操作的要分组的表
    执行语句后的结果

    展开全文
  • SELECT c.time,MIN(c.band) mi ... SELECT a.bandwidth band,a.create_time time FROM tb1 a LEFT JOIN tb1 b ON a.create_time = b.create_time AND a.bandwidth < b.bandwidth WHERE a.create_time BETWEE...
  • sql 排序 ROW_NUMBER() OVER 函数这是我之前写的sql排序函数,现在的需求是mysql 分组,组内排序并且取第一条数据。 mysql用子查询实现类似于row_number()函数的功能 场景: versionId=0时,是默认版本,即该记录...
  • mysql分组排序取时间最近的第一条

    千次阅读 2020-04-29 10:30:03
    起因:需要对一张表数据进行分组排序,不同设备最新的一条更新记录,那么问题来了, 表数据经过简单Group By 之后,所获取到的 数据与期望数据不一致, 如图不同vem_id的最新次的更新数据,常规group by 无法解决...
  • mysql查询排序后数据 两种写法: select b.emp_no,b.birth_date,b.first_name,b.last_name,b.gender,b.hire_date from ( select *,(@rowno:=@rowno+1) as no from (select * from 表名 order by hire_date ...
  • MAX(max.line) lineMax FROM ( SELECT DISTINCT (a.id) tt, a.* FROM student a ORDER BY a.line DESC ) max GROUP BY student_id DISTINCT(主键)让数据集先进行排序再分组取排序后第一条 ...
  • 最近遇到个统计报表的需求,数据按照某个字段分组,其他列最新一条数据的列。 数据库:mysql 在使用传统的查询,发现order by 是无效的。相信各位童鞋也是一样的情况。 select id,gate_id,sum(vehicle_num) ...
  • 表示按id降序后取前6行 select * from(select * from test order by id desc) where rownum<= 6 ; 表示前6行再按id降序 select * from test where rownum<= 6 order by id desc ; mysql 表示先...
  • MySQL-分组排序后取前3

    千次阅读 2019-06-26 18:49:04
    EXPLAIN SELECT a.* ...SELECT a.*, IF(@tmpgid = strategy_stockid, @rank := @rank+1, @rank := 0) AS rank, @tmpgid := strategy_stockid, @number := @number+1, @rank, @tmpgid FROM (SELECT * FROM web_st...
  • 1.首先利用条件筛选出基本数据SELECT * from test where columna = 'xxx' AND columnb = 'xxx' and ......2.对基本数据分组并利用SUBSTRING_INDEX和GROUP_CONCAT函数取出需要的字段SELECT tab1.columnc, tab1....
  • 有一张这样的数据表, 需求是根据error_type分组然后status最小的第一条数据 第一种写法: select t.* from ( select e.* from error_record e where e.status > 0 and e.error_type > 0 order ...
  • 最近面试被问到,mysql对表按指定字段排序后取第11记录sql怎么写? 以前用的sql server 想到前10记录用的是top10,对于mysql也套用的,原来是不对的,尴尬! 以个学生便student为例,按分数score排序。 ...
  • mysql 分组排序前n数据

    千次阅读 2019-04-28 20:05:02
    通用模板: select a.* from ( select t1.*,(select count(*)+1 from 表 where 分组字段=t1.分组字段 and 排序字段<t1.排序字段) as group_id from 表 t1 ) a where a.group_id<=3 # 假设前3 ...
  • 如图,如果我们按 number 分组再按 is_bak 从大到小排序获取最大的第一条数据,那么最后结果就是 id 为 1,4,6 这 3 。 select t.* from ( select distinct(id) as tt,t1.* from a_t as t1 order by is_bak ...
  • MySQL分组排序取第一列数据的方法

    千次阅读 2019-02-25 23:23:14
    需求分析:多行数据分组排序之后,如何获取第一行数据?具体案例如下: 根据要求查询结果: 查询结果username不能重复; username重复的选择条件是status为1则选择该,多个1则按照createtime选取最近的一; ...
  • 一、按name分组,val排序(这里是最大值),取第一条数据 --方法1: select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a...
  • mysql排序分组 组里面最新一条数据

    万次阅读 热门讨论 2018-08-20 11:38:09
     一般写sql 先排序在分组最新的一条数据 不外乎  SELECT p.* FROM (SELECT * FROM sys_message ORDER BY id DESC )p GROUP BY p.messageType ORDER BY id desc  但是这样 还是得不到 分组里面最新的一条...
  • 今天遇到一个问题,将...在group by的时候的是每一组的第一条; 实验二: 依旧是的该组的第一条数据 测试代码如下: DROP TABLE IF EXISTS `test0511`; CREATE TABLE `test0511` ( `id` int(11) NULL DEFA
  • 查询出结果将时间排序后取第一条 select * from a where time<="2017-03-29 19:30:36" order by time desc limit 1 扩展:常见数据库 在SQL Server数据库中,使用top关键字: SELECT TOP number|percent ...
  • Mysql取分组的每组第一条数据 gruop by 分组 进行 order by mysql会按照 先分组后排序的形式进行输出 并不能做到每组中的第一条数据取出。 我的思路是 : 先将要查询的数据表转换成已经排序的临时表 在进行 分组...
  • select * from ( SELECT name, sex, row_number() over (partition by name ORDER by age DESC) AS num FROM tableA ) a WHERE a.num=1 ```
  • 这里只介绍在表数据有顺序可排序(时间,数字大小等)的情况下的分组取第一或最后一数据: https://blog.csdn.net/li_jian_fei/article/details/86162962

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 177,711
精华内容 71,084
关键字:

mysql排序后取第一条

mysql 订阅