果糖网

Subqueryable 其他字段 返回

SqlSugar
6 70
该叫什么 Ρjˊ 发布于1周前
悬赏:5 飞吻
var getAll7 = db.Queryable<Student>().Where(it => 
SqlFunc.Subqueryable<School>().Where(s => s.Id == it.Id).Any()).ToList();
 
/*生成的SQL(等于同于it.id in(select id from school)只是写法不一样
SELECT `ID`,`SchoolId`,`Name`,`CreateTime` FROM `STudent` it 
WHERE (EXISTS ( SELECT * FROM `School` WHERE ( `Id` = `it`.`ID` ) )) 
*/



如果是其他字段,要怎么写? 

from student where student.TestId in (select TestId from OtherTable where Id in (3,4,5,6,7))

热忱回答6


  • var dis=new int[]{3,4,4,5,7};
    var getAll7 = db.Queryable<Student>().Where(it => 
    SqlFunc.Subqueryable<School>().Where(s => dis.Contins(s.Id)).Any()).ToList();


    0 回复
  • @fate stay night

    var dis=new int[]{3,4,4,5,7};
    var getAll7 = db.Queryable<Student>().Where(it => 
    SqlFunc.Subqueryable<School>().Where(s => dis.Contins(s.Id)).Any()).ToList();


    啊? 全都是这样写? 这怎么对上的?

    假如是student.AId  student.BId 也是这样吗?

    0 回复
  • @Ρjˊ:我是按你上面的SQL来写的 ,你要什么样子一次性描述清楚

    0 回复
  • @fate stay night

    表:

    product: Id, Name, BrandId

    brand: Id, Name

    select * from m_product where BrandId in (SELECT Id from brand where Name = '名称')


    不要说用JOIN啊,这是示例场景,不适用JOIN。

    比如:

    var brandNames = new List<string>(){"啊啊","呵呵"};

    Db.Queryable<Product>().WhereIF(brandNames.Count> 0, (product)=> product.BrandId in (select Id from brand where Name in @brandNames); 

    {{{另外一个问题,这里需要生成in(@a1,@a2,@a3)}}}

    0 回复

  • image.png

    @fate stay night

    如果Subqueryable都是生成Exists,那这个语句的结果就不对.

    0 回复
  • @Ρjˊ:不明白你的意思 ,你把你的建表语句和你想要的sql发出来 

    0 回复

学习文档