mysql开发小笔记
1. sql执行完毕后发现sql查询语句查询出的结果远远超出了自己预期的范围,
原语句是:select xx from xx where a=b and c=d or e=f;
预期的结果是满足a=b的同时c=d或者e=f,
原因:忘记加括号导致范围超限
解决:给or连接的多个条件外面加上括号即可:
select xx from xx where a=b and(c=d or e=f);
总结:当多个条件写在一起进行筛选过滤查询的时候,也就是当执行sql时,根据筛选条件只想让它按照其中的某一个对应的条件去执行,其中为了防止两个或多个条件之间有"瓜葛"查询出许多多余的不对应的我们不需要的数据,也就是范围超限,我们可以在这两个或多个条件外面套一个"( )",这样就相当于将这些诸多条件看做是一个整体,根据查询条件进行筛选,最终只会有对应的一个条件,这样就防止了由于多个 "or" 连接的条件查询导致的范围超限问题。
例子:将 1 和 2 这两个sql组合到一起写,减少代码量提高工作效率,就可以按照 3 的写法写。
-- 1.太子城
@Query(value = "SELECT * FROM rec_monitor_device m WHERE m.station_code = :stationCode and device_category_code='0817' ",nativeQuery = true)
List<MonitorDevice> findByServiceStatus(@Param("stationCode") String stationCode, Pageable pageable);
-- 2.清河
@Query(value = "SELECT * FROM rec_monitor_device m WHERE m.station_code = :stationCode and device_category_code='0830' ",nativeQuery = true)
List<MonitorDevice> findByServiceStatus(@Param("stationCode") String stationCode, Pageable pageable);
-- 3.组合
@Query(value = "SELECT * FROM rec_monitor_device m WHERE m.station_code = :stationCode and (device_category_code ='0817' or device_category_code='0830') ,nativeQuery = true)
List<MonitorDevice> findByServiceStatus(@Param("stationCode") String stationCode, Pageable pageable);
=============================================================================
2.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示