groupby分组后获得每组中符合条件的那条记录
当group by单独使⽤时,只显⽰出每组的第⼀条记录。
如下,未分组时查询出两条记录
SELECT
info.id,
info.switch_id,
info.port_id,
info.mac_addr,
info.ip,
<_time,
info.dev_name,
info.is_active,
info.port_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
groupby分组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,
<_time,
info.dev_name,
info.is_active,
info.port_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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。