使用Rust Diesel操作PostgreSQL时如何实现小于条件查询
Rust Diesel 小于条件查询正确实现方案
问题排查
现有代码存在两个问题:
- 过滤条件和目标SQL不匹配:目标SQL是过滤
playlist_id = 1,但现有代码用的是source_id.eq(req_song_id) - 小于比较语法错误:不能直接用Rust原生
<运算符比较Diesel列对象和常量,需要用Diesel提供的专用比较方法
正确实现代码
首先确保你已经在文件顶部导入了Diesel基础依赖:
use diesel::prelude::*;
对应的查询代码如下:
let playlist_records = favorites .filter(playlist_id.eq(1)) .filter(play_count.lt(100)) // lt方法对应SQL的<运算符 .limit(1) .load::<QueryFavorites>(&connection) .expect("Error loading favorite");
拓展说明
Diesel针对列的数值比较提供了一套统一的方法,和SQL运算符对应关系如下:
lt(值):对应<小于le(值):对应<=小于等于eq(值):对应=等于ne(值):对应!=不等于gt(值):对应>大于ge(值):对应>=大于等于
如果想要直接使用<运算符编写查询,需要额外导入diesel::expression::expression_methods::ExpressionMethods特征,不过直接调用方法写法更清晰,不会和Rust原生比较逻辑混淆,更推荐使用。
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

