当group by单独使用时,只显示出每组的第一条记录。
如下,未分组时查询出两条记录
SELECT
info.id,
info.switch_id,
info.port_id,
info.mac_addr,
info.ip,
info.rec_time,
info.dev_name,
info.is_active,
info.port_type,
info.real_type,
cfg.port_describe,
cfg.port_value,
switchers.name,
switchers.switch_ip
FROM
(
T_NET_SWITCHBOARD_PORT_INFO AS info
LEFT JOIN T_NET_SWITCHBOARD_PORT_CFG AS cfg
ON info.port_id = cfg.port_id
)
LEFT JOIN T_NET_SWITCHBOARD_CFG AS switchers
ON info.switch_id = switchers.switch_id
WHERE info.mac_addr != ''
AND info.`real_type` = 0
AND info.port_type != 1
AND info.dev_name LIKE "%" "%"
AND info.ip LIKE "%" "%"
AND info.mac_addr LIKE "%" "%"
AND info.mac_addr LIKE '%00:10:7F:52:0D:FD%'

结果

id       switch_id  port_id  mac_addr               ip                         rec_time                 dev_name  is_active  port_type  real_type  port_describe          port_value  name                           switch_ip      
------  ---------  -------  -----------------  --------------  -------------------  --------  ---------  ---------  ---------  ---------------------  ----------  ----------------------------- 
 59591         18     3697  00:10:7F:52:0D:FD   168.160.15.197   2018-08-08 15:40:32                    0          2          0  GigabitEthernet5/0/2           33  地下UPS室-华为S9306                 168.160.15.66  
 59798         20     3758  00:10:7F:52:0D:FD                            2018-08-08 15:47:16                    0          0          0  GigabitEthernet0/0/14          19  地下总控室-华为S5700-1                168.160.15.76

这个时候加上group by 默认加载显示第一条,如果我想要port_type最小的那条该如何实现?

先对分组前进行排序,然后再分组获取。

SELECT a.* FROM (SELECT
info.id,
info.switch_id,
info.port_id,
info.mac_addr,
info.ip,
info.rec_time,
info.dev_name,
info.is_active,
info.port_type,
info.real_type,
cfg.port_describe,
cfg.port_value,
switchers.name,
switchers.switch_ip
FROM
T_NET_SWITCHBOARD_PORT_INFO AS info
LEFT JOIN T_NET_SWITCHBOARD_PORT_CFG AS cfg
ON info.port_id = cfg.port_id
LEFT JOIN T_NET_SWITCHBOARD_CFG AS switchers
ON info.switch_id = switchers.switch_id
WHERE (info.mac_addr != ''
AND info.`real_type` = 0
AND info.port_type != 1
AND info.mac_addr LIKE '%00:10:7F:52:0D:FD%')
ORDER BY info.port_type -- 先排序再分组
) a
GROUP BY a.mac_addr
ORDER BY
a.switch_ip,
a.port_describe

group by分组后获得每组中符合条件的那条记录的更多相关文章

  1. 1.(group by)如何让group by分组后,每组中的所有数据都显示出来

    问题描述:表如下,如何让这个表按device_id这个字段分组,且组中的每条数据都查寻出来?(假如说这个表名为:devicedata) 错误答案:select * from devicedata GR ...

  2. 2.(group by)如何让分组后,每组中的数据按时间倒序排列(group by和 order by的分组按排列)

    比如说有表devicedata: 问题: 现在我想将devicedata这个表中的数据,先按device_id这个字段分组,然后每组中的数据按时间字段ts从大到小的排列, 如何解决呢? 错误的sql: ...

  3. sql 用Group by分组后,取每组的前几条记录

    转自:http://blog.163.com/jeson_lwj/blog/static/135761083201052411115783/ --查询每门课程的前2名成绩 CREATE TABLE S ...

  4. SQL 分组后获取每组中最大值

    场景:sql server 2008 drop table ID CREATE TABLE ID ( id ,) not null, code int , D date, PRIMARY KEY (i ...

  5. SQL,group by分组后分别计算组内不同值的数量

    select name as 姓名,sum( case when cargo='笔' then 1 else 0 end ) as 笔,sum( case when cargo='橡皮' then 1 ...

  6. SQL 分组后,获取每组中的最大值对应的数据

    select gr,num,dt,(select bys from test where gr=b.gr and dt=b.dt) bys from ( select gr,count(0) num, ...

  7. oracle分组后取某组中最大的值

    查询username,根据fundcode分组,按照date倒序,取date最大的一条数据 select * from ( select username, row_number() over(par ...

  8. 用Group by分组后,取每组的前3条记录,怎么取?

    使用子查询进行查询 SELECT * FROM home_content a WHERE ( SELECT count(id) FROM home_content WHERE class_link = ...

  9. MSSQL 分组后取每组第一条(group by order by)

    查询中经常遇到这种查询,分组后取每组第一条.分享下一个SQL语句: --根据 x 分组后.根据 y 排序后取第一条 select * from ( select ROW_NUMBER() over(p ...

随机推荐

  1. js 校验 btc eth 地址

    NPM 安装 npm install wallet-address-validator Browser <script src="wallet-address-validator.mi ...

  2. POI导出数据以Excel的方式录入,下载

    简单描述:把数据导出到excel文件中.过程:获取要导出的数据列表(list),创建excel文件,数据放入. 代码: //html代码 <div class="btn-group&q ...

  3. vue-创建新项目

    1.安装node,下载地址:https://nodejs.org/en/download/ 2.安装完成后打开cmd,输入node-v,出现版本信息说明安装成功 3.输入npm install -g ...

  4. day14.生成器迭代器作业

    1.写生成器,从文件中读取内容,再每一行读取的内容前加上 ‘***’之后返回给用户 def func(filename): word = input('输入你想找的内容:') with open(fi ...

  5. vue-cli按需加载,懒加载组件

    vue来做一个单页面应用,当我们的项目越来越大,组件越来越多的时候,首次启动项目户特别慢,就算做一个加载框,蒙层之类的,体验也不会好,这个时候就需要按需加载 1.什么叫按需加载 所谓按需加载,顾名思义 ...

  6. java实验5

    实验一要求: 两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA 结对实现中缀表达式转后缀表达式的功能 MyBC.java ...

  7. UOJ#172. 【WC2016】论战捆竹竿 字符串 KMP 动态规划 单调队列 背包

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ172.html 题解 首先,这个问题显然是个背包问题. 然后,可以证明:一个字符串的 border 长度可 ...

  8. 蓝桥杯 全球变暖(dfs)

    标题:全球变暖 [题目描述]你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: 其中"上下左右"四个方向上连在一起的 ...

  9. BSUIR Open Finals

    A. Game with chocolates 因为差值必须是$P$的幂,故首先可以$O(\log n)$枚举出先手第一步所有取法,判断之后的游戏是否先手必败. 对于判断,首先特判非法的情况,并假设$ ...

  10. BZOJ5254 : [Fjwc2018]红绿灯

    显然所有询问都要经过至少$\sum d$,只需要考虑除了$\sum d$之外的等待红灯的时间. 将所有询问的时间模$g+r$,并按时间用set维护. 那么对于每个红灯,在set中可以找出$1$到$2$ ...