group by分组后获得每组中符合条件的那条记录
当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.(group by)如何让group by分组后,每组中的所有数据都显示出来
问题描述:表如下,如何让这个表按device_id这个字段分组,且组中的每条数据都查寻出来?(假如说这个表名为:devicedata) 错误答案:select * from devicedata GR ...
- 2.(group by)如何让分组后,每组中的数据按时间倒序排列(group by和 order by的分组按排列)
比如说有表devicedata: 问题: 现在我想将devicedata这个表中的数据,先按device_id这个字段分组,然后每组中的数据按时间字段ts从大到小的排列, 如何解决呢? 错误的sql: ...
- sql 用Group by分组后,取每组的前几条记录
转自:http://blog.163.com/jeson_lwj/blog/static/135761083201052411115783/ --查询每门课程的前2名成绩 CREATE TABLE S ...
- SQL 分组后获取每组中最大值
场景:sql server 2008 drop table ID CREATE TABLE ID ( id ,) not null, code int , D date, PRIMARY KEY (i ...
- SQL,group by分组后分别计算组内不同值的数量
select name as 姓名,sum( case when cargo='笔' then 1 else 0 end ) as 笔,sum( case when cargo='橡皮' then 1 ...
- SQL 分组后,获取每组中的最大值对应的数据
select gr,num,dt,(select bys from test where gr=b.gr and dt=b.dt) bys from ( select gr,count(0) num, ...
- oracle分组后取某组中最大的值
查询username,根据fundcode分组,按照date倒序,取date最大的一条数据 select * from ( select username, row_number() over(par ...
- 用Group by分组后,取每组的前3条记录,怎么取?
使用子查询进行查询 SELECT * FROM home_content a WHERE ( SELECT count(id) FROM home_content WHERE class_link = ...
- MSSQL 分组后取每组第一条(group by order by)
查询中经常遇到这种查询,分组后取每组第一条.分享下一个SQL语句: --根据 x 分组后.根据 y 排序后取第一条 select * from ( select ROW_NUMBER() over(p ...
随机推荐
- Centos查看系统CPU个数、核心数、线程数
1.查看 CPU 物理个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 2.查看 CPU 核心数量 grep 'core id' /proc/ ...
- Java设计模式迭代器
定义:提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示. 类型:行为型 适用场景: 访问一个集合对象的内容而无需暴露它的内部表示 为遍历不同的集合结构提供一个统一的接口 优点 ...
- 【Bootstrap】 typeahead自动补全
typeahead 这篇文章记录了我在使用typeahead的一些问题,不是很全,但是基本够用. Bootstrap提供typeahead组件来完成自动补全功能. 两种用法: 直接给标签添加属性 &l ...
- ExtJS5搭建MVVM框架
概述 · ExtJs5能够搭建Js的MVC框架,通过配置路由能够通过左边树形菜单导航到所需的页面,效果如下: 搭建JS框架 新建home.htm页面作为ExtJs加载的主体页面,页面引入ExtJs需要 ...
- Codeforces Round #524 (Div. 2) F
题解: 首先这个东西因为强制在线区间查询 所以外面得套线段树了 然后考虑几条线段怎么判定 我们只需要按照右端点排序,然后查询的时候查找最右节点的前缀最大值就可以了 然后怎么合并子区间信息呢 (刚开始我 ...
- mq_receive
NAME mq_receive - 从消息队列中获取消息 (REALTIME) SYNOPSIS #include <mqueue.h> ssize_t mq_receive(mqd_t ...
- 【转】GB2312、GBK和UTF-8三种编码的简要说明
原文地址:http://www.cnblogs.com/hust-yingjie/p/5481966.htmlGB2312.GBK和UTF-8都是一种字符编码,除此之外,还有好多字符编码.只是对于我们 ...
- 企业级Docker-Harbor
[环境准备] # yum install -y yum-utils device-mapper-persistent-data lvm2 下载docker-ce版本的yum源 # yum-config ...
- python 字符串常用操作
字符串常用方法 capitalize() String.capitalize() 将字符串首字母变为大写 name = 'xiaoming' new_name = name.capitalize() ...
- react中constructor()和super()的具体含义以及如何使用
1.constructor()---super( )的基本含义 constructor()--构造方法 这是ES6对类的默认方法,通过new命令生成对象实例时自动调用该方法.并且,该方法是类中必须有的 ...