You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust的Diesel 1.4.4(PostgreSQL)中实现IN查询?

你用错了方法,contains是针对PostgreSQL数组字段的查询方法,用来判断数组类型的字段是否包含指定元素,无法用来实现SQL的IN查询。你需要替换为eq_any方法,修改后代码如下:

pub fn songs(ids: Vec<i64>){
    use schema::songs::dsl::*;
    let connection = config::establish_connection();
    let results = songs.filter(id.eq_any(ids))
        .load::<QuerySongs>(&connection)
        .expect("Error loading songs");
}

注意事项

  • 执行查询前最好先判断传入的ids是否为空,空Vec会让diesel生成id IN ()的非法SQL,触发运行时错误,空参数场景下可以直接返回空结果,不需要访问数据库。
  • 如果你后续升级到diesel 2.0+版本,eq_any的用法保持兼容,不需要额外修改代码。

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:00:01