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 ...
随机推荐
- linuxDNS
getenforce 查询状态 setenforce 0 临时关闭 永久关闭vim /etc/selinux/configlinux配置文件内容SELINUC=disabled关闭重启系统生效 ...
- vertx实例的fileSystem文件系统模块
初始化 //根据OS区分实现 System.getProperty("os.name").toLowerCase(); Utils.isWindows() ? new Window ...
- javascript/jquery获取url地址栏参数的方法
简洁jq方法获取url地址栏的参数 function getQueryVariable(variable){ var query = window.location.search.substring( ...
- ansible的lookup
lookup路径: /usr/lib/python2.7/site-packages/ansible/plugins/lookup 所有的lookup插件列表cartesian.py dnstxt.p ...
- 使用wps插件,实现word转PDF
项目需求:不打算用office自带的组件实现word转pdf操作 环境需求:安装wps2016专业版 新建一个控制台应用程序 添加引用:在COM下 Kingsoft Add-In Designer和U ...
- 整理一下python中with的用法
ith替代了之前在python里使用try...finally来做清理工作的方法.基本形式如下: with expression [as variable]: with-block 当expressi ...
- 教你正确打开async/await关键字的使用
这段时间在项目开发中看到了一些async/await的使用,在aspnet core的host组件源码中也看到了许多的async/await代码.在开发时,正确的使用了async/await是可以提高 ...
- Yii2 验证规则
验证器的使用方法: public function rules() { return [ [['email', 'password'], 'required'], ['password', 'stri ...
- jdk1.8.0_40 +maven+tomcat7.0+mysql8.0详细安装教程
(一) jdk的安装 1.下载jdk推荐下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213 ...
- collections标准库
collections标准库 之前Python的第三方库用的一直很舒服,现在突然发现标准库也有collections这样的神器,可以补充list.set.dict以外的应用 1. namedtuple ...