zoukankan      html  css  js  c++  java
  • Entity SQL 说说IN关键字

    Entity SQL(ESQL) 是专门为ADO.NET Entity Framework(EF)提供查询更新数据而产生的,也就是ESQL是EF的附属部件。ESQL大大提高了EF的使用性,我们就可以像使用SQL查询Table一样很方便地对EF生成的实体集合,尽管它还是加载配置文件,把ESQL转化成SQL来对Table进行查询,但这可以算是一个非常具有革命性的东东。

    ESQL乍一眼看上去,跟SQL没有太大区别,但事实上却不尽其然,这不,就遇到了ESQL中的IN关键字,它跟SQL的IN关键字不尽相同,不能在IN后面跟一个查询,而只能跟一个集合类型。不知道是因为在EF设计时就不想再让我们用IN后面跟查询的方式了呢,还是算是ESQL的一个缺陷,我不得面知,暂时就算是缺陷吧!那么在SQL中In后面跟一个查询的这种方式,如:SELECT * FROM A WHERE A.ID IN(SELECT ID FROM B),在ESQL里面怎么来完成类似上面的查询呢?暂时我没有找到微软官方的相关解决方案,我就不得不自己想办法解决这个问题啊,不让我们使用带查询的IN,那我就用别的来代替嘛。经过研究,我发现了另一个可以代替In的写法,就是使用ESQL里面的Exists来弥补ESQL中IN的缺陷。如上面的查询,我们完全可以写成SELECT A FROM A WHERE EXISTES(SELECT B.ID FROM B WHERE B.ID=A.ID)。

    唉,问题算解决了吧!不过EXISTS的运行效率,不敢让人恭维,只能在小数据量时使用,如果数据过多,那就死翘翘了。好在我现在的数据量不是很大,也算是勉强完成了任务,可是认真想下,它毕竟是个隐患!

  • 相关阅读:
    leetCode 53. maximum subarray
    leetcode strStr()
    DCNN models
    1*1 的卷积核
    leetcode 14. longest common prefix
    springMVC接受json并打开新页面
    jsp取addFlashAttribute值深入理解即springMVC发redirect传隐藏参数
    hive安装教程本地模式
    poi excel超出65536行数限制自动扩展Invalid row number (65536) outside allow
    java 构造json对象数组
  • 原文地址:https://www.cnblogs.com/taofh/p/1570239.html
Copyright © 2011-2022 走看看