Skip to content

[功能改进]: 是否可以考虑支持一下多列in的sql #6825

Open
@milo-xiaomeng

Description

@milo-xiaomeng

确认

  • 我的版本是最新版本, 我的版本号与 version 相同, 并且项目里无依赖冲突
  • 我已经在 issue 中搜索过, 确认问题没有被提出过
  • 我已经修改标题, 将标题中的 描述 替换为你的想法(不得删除 描述 前面的部分)

功能改进

多列in的sql

sql demo

-- 使用多列 IN 进行查询
SELECT *
FROM student
WHERE (grade, age) IN (('A', 1), ('B', 2));

支持的数据库情况

数据库系统 多列 IN 支持 说明
PostgreSQL ✅ 支持 完全支持 (col1, col2) IN ((v1, v2), (v3, v4)) 语法。
MySQL ✅ 支持 从 5.7 版本起支持多列 IN 语法。
Oracle ✅ 支持 支持多列 IN,但在某些场景下需使用 JOINEXISTS 代替。
SQLite ✅ 支持 支持多列 IN 语法。
SQL Server ❌ 不支持 不支持多列 IN,需使用 EXISTSJOIN 替代。

期望的使用方法 感觉是这样

QueryChainWrapper

    public List<Student> list(List<List<Object>> list) {
        return this.query()
                .in(List.of("grade","age"),list)
                .list();
    }

    public List<Student> list(List<List<Object>> list) {
        return this.query()
                .in(list,"grade","age")
                .list();
    }

LambdaQueryChainWrapper

    public List<Student> list(List<List<Object>> list) {
        return this.lambdaUpdate()
                .in(List.of(Student::getGrade, Student::getAge), list)
                .list();
    }
     public List<Student> list(List<List<Object>> list) {
        return this.lambdaUpdate()
                .in(List.of(Student::getGrade, Student::getAge), list)
                .list();
    }
   public List<Student> list(List<Query> list) {
        return this.lambdaQuery()
                .in(List.of(Student::getGrade, Student::getAge),list,List.of(Query::getGrade, Query::getAge))
                .list();
    }

参考资料

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions