mysql 5.7 及以下版本 分组(GROUP BY)和排序(ORDER BY)共同使用
《1》select * FROM gs_day_trade_list a WHERE
deal_time IN ( SELECT MAX( deal_time ) FROM gs_day_trade_list where data_date='2025-01-03' and trade_date='2025-01-03' GROUP BY data_period )
ORDER BY data_period asc,deal_time desc
1.思路先分组后面排序,以上 sql 实现 按照 时段分组 后,取 成交时间最新的一条数据, 如果 时间最新早的一条, max 改成 min 就可以了
--以上有bug 时间有相同的就出来多余数据
《2》select * FROM gs_day_trade_list a WHERE
deal_time = ( SELECT MAX( b.deal_time ) FROM gs_day_trade_list b where a.data_date=b.data_date and a.trade_date=b.trade_date GROUP BY b.data_period )
where a.data_date='2025-01-03' and b.trade_date='2025-01-03'
ORDER BY a.data_period asc,a.deal_time desc
《3》
select GROUP_CONCAT(menu_id) from rh_menu; --所有行的字段用逗号拼接成一列
select CONCAT(menu_id,parent_id) from rh_menu --- 两个字段拼接
select CONCAT_WS(',',menu_id,parent_id) from rh_menu --- 两个字段用逗号拼接
select * from rh_menu a where FIND_IN_SET(a.parent_id,'0')=1 and a.sys_code='11' --- 查询 parent_id等于0的数据,FIND_IN_SET 可以放 函数,字段 ,和 in 和like 类似
select * from rh_menu a where FIND_IN_SET(a.parent_id,get_child_list('0'))=1 and a.sys_code='11' --- 查询 parent_id等于0的数据,FIND_IN_SET 可以放 函数,字段 ,和 in 和like 类似
《4》mysql 自定义 函数
delimiter $$
drop function if exists get_child_list$$
create function get_child_list(in_id varchar(10)) returns varchar(1000)
begin
declare ids varchar(1000) default '';
declare tempids varchar(1000);
set tempids = in_id;
while tempids is not null do
set ids = CONCAT_WS(',',ids,tempids);
select GROUP_CONCAT(id) into tempids from dept where FIND_IN_SET(pid,tempids)>0;
end while;
return ids;
end
$$
delimiter ;
参考
https://www.cnblogs.com/guohu/p/14990788.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 分享4款.NET开源、免费、实用的商城系统
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库