精华内容
下载资源
问答
  • orWhereIn does not exist

    2020-11-25 12:36:46
    <p><strong>Versions</strong></p> ...<p>Method ScoutElastic\Builders\SearchBuilder::orWhereIn does not exist</p><p>该提问来源于开源项目:babenkoivan/scout-elasticsearch-driver</p></div>
  • <div><p>Windows doesn't have uname (Ignore the red check marks, that's appveyor and not relevant, the tests are passing)</p><p>该提问来源于开源项目:citusdata/citus</p></div>
  • <div><p>NamedPipeClientStream waits when the pipe does not exist, and it waits by spinning: <pre><code> // Some platforms may return immediately from TryConnect if the connection could not be made, ...
  • <div><p>This issue occurred when I was doing some transformations to certain ... react-snap would fail because the </p> element doesnt exist该提问来源于开源项目:stereobooster/react-snap</p></div>
  • <p>Not sure if it's even a good fix, but I found it necessary to have at least this much, otherwise it'd just explode and kill my proxy server (I couldn't wrap it in <code>try</code> ...
  • <div><p>I'm using rails 5 and globalize master. <p>Migrations worked flawlessly, ... does not exist <p>Is it supposed to be like this?</p><p>该提问来源于开源项目:globalize/globalize</p></div>
  • <div><p>Please review cc </p><p>该提问来源于开源项目:ManageIQ/manageiq</p></div>
  • I do not know the code for the character very well but do they plan ahead and keep jobs somewhere as this was working before ?</p><p>该提问来源于开源项目:TeamPorcupine/ProjectPorcupine</p></...
  • <div><p>Fixes #271. <p>I need to figure out how to test this. Maybe I can temporarily delete gh-pages from this repo and retrigger the PR build. </p><p>该提问来源于开源项目:...
  • select * from A where id in(select id from B) 以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B表中的id相等,如果相等则将A表的记录加入结果集中,直到遍历完A表...

    select * from A where id in(select id from B)
    以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B表中的id相等,如果相等则将A表的记录加入结果集中,直到遍历完A表的所有记录.
    它的查询过程类似于以下过程

    List resultSet=[];
    Array A=(select * from A);
    Array B=(select id from B);

    for(int i=0;i<A.length;i++) {
    for(int j=0;j<B.length;j++) {
    if(A[i].id==B[j].id) {
    resultSet.add(A[i]);
    break;
    }
    }
    }
    return resultSet;
    可以看出,当B表数据较大时不适合使用in(),因为它会B表数据全部遍历一次.
    如:A表有10000条记录,B表有1000000条记录,那么最多有可能遍历100001000000次,效率很差.
    再如:A表有10000条记录,B表有100条记录,那么最多有可能遍历10000
    100次,遍历次数大大减少,效率大大提升.

    结论:in()适合B表比A表数据小的情况

    select a.* from A a where exists(select 1 from B b where a.id=b.id)
    以上查询使用了exists语句,exists()会执行A.length次,它并不缓存exists()结果集,因为exists()结果集的内容并不重要,重要的是结果集中是否有记录,如果有则返回true,没有则返回false.
    它的查询过程类似于以下过程

    List resultSet=[];
    Array A=(select * from A)

    for(int i=0;i<A.length;i++) {
    if(exists(A[i].id) { //执行select 1 from B b where b.id=a.id是否有记录返回
    resultSet.add(A[i]);
    }
    }
    return resultSet;
    当B表比A表数据大时适合使用exists(),因为它没有那么遍历操作,只需要再执行一次查询就行.
    如:A表有10000条记录,B表有1000000条记录,那么exists()会执行10000次去判断A表中的id是否与B表中的id相等.
    如:A表有10000条记录,B表有100000000条记录,那么exists()还是执行10000次,因为它只执行A.length次,可见B表数据越多,越适合exists()发挥效果.
    再如:A表有10000条记录,B表有100条记录,那么exists()还是执行10000次,还不如使用in()遍历10000*100次,因为in()是在内存里遍历比较,而exists()需要查询数据库,我们都知道查询数据库所消耗的性能更高,而内存比较很快.

    结论:exists()适合B表比A表数据大的情况

    当A表数据与B表数据一样大时,in与exists效率差不多,可任选一个使用.

    比如在Northwind数据库中有一个查询为
    SELECT c.CustomerId,CompanyName FROM Customers c
    WHERE EXISTS(
    SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID)
    这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢?

    EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
    EXISTS 指定一个子查询,检测 行 的存在。
    语法: EXISTS subquery
    参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。
    结果类型: Boolean 如果子查询包含行,则返回 TRUE ,否则返回 FLASE 。

    例表A:TableIn 例表B:TableEx

    (一). 在子查询中使用 NULL 仍然返回结果集
    select * from TableIn where exists(select null)
    等同于: select * from TableIn

    (二). 比较使用 EXISTS 和 IN 的查询。注意两个查询返回相同的结果。
    select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
    select * from TableIn where ANAME in(select BNAME from TableEx)

    (三). 比较使用 EXISTS 和 = ANY 的查询。注意两个查询返回相同的结果。
    select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
    select * from TableIn where ANAME=ANY(select BNAME from TableEx)

    NOT EXISTS 的作用与 EXISTS 正好相反。如果子查询没有返回行,则满足了 NOT EXISTS 中的 WHERE 子句。

    结论:
    EXISTS(包括 NOT EXISTS )子句的返回值是一个BOOL值。 EXISTS内部有一个子查询语句(SELECT … FROM…), 我将其称为EXIST的内查询语句。其内查询语句返回一个结果集。 EXISTS子句根据其内查询语句的结果集空或者非空,返回一个布尔值。

    一种通俗的可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。

    分析器会先看语句的第一个词,当它发现第一个词是SELECT关键字的时候,它会跳到FROM关键字,然后通过FROM关键字找到表名并把表装入内存。接着是找WHERE关键字,如果找不到则返回到SELECT找字段解析,如果找到WHERE,则分析其中的条件,完成后再回到SELECT分析字段。最后形成一张我们要的虚表。
    WHERE关键字后面的是条件表达式。条件表达式计算完成后,会有一个返回值,即非0或0,非0即为真(true),0即为假(false)。同理WHERE后面的条件也有一个返回值,真或假,来确定接下来执不执行SELECT。
    分析器先找到关键字SELECT,然后跳到FROM关键字将STUDENT表导入内存,并通过指针找到第一条记录,接着找到WHERE关键字计算它的条件表达式,如果为真那么把这条记录装到一个虚表当中,指针再指向下一条记录。如果为假那么指针直接指向下一条记录,而不进行其它操作。一直检索完整个表,并把检索出来的虚拟表返回给用户。EXISTS是条件表达式的一部分,它也有一个返回值(true或false)。

    在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,可以通过使用 EXISTS 条件句防止插入重复记录。
    INSERT INTO TableIn (ANAME,ASEX)
    SELECT top 1 ‘张三’, ‘男’ FROM TableIn
    WHERE not exists (select * from TableIn where TableIn.AID = 7)

    EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为IN不走索引,但要看实际情况具体使用:
    IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

    not in 和not exists
        如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。

    展开全文
  • Similar behaviour on real filesystems are able to invoke <code>Path.resolve(otherPath), where otherPath does not exist. <pre><code> final FileSystem posixCompliantFs = Jimfs.newFileSystem...
  • <p>We are not seeing ANY data when passing a vector of topics to https://github.com/edenhill/librdkafka/blob/master/src-cpp/rdkafkacpp.h#L1423 where one of the topics did not exist, but all other ...
  • 高并发 得情况下,我们不想数据库产生多条相同数据得情况下,会理所当然得选择 数据库乐观锁 ...WHERE NOT EXISTS(  SELECT *  FROM table  WHERE value = ? ); 原理是,s'q'l语句是在数据库上执行的。

          高并发得情况下,我们不想数据库产生多条相同数据得情况下,会理所当然得选择数据库乐观锁,查询一下是否存在,如果不存在,插入。

           但是当存在多台服务器得时候,例如负载均衡,当一个客户端快速的重复的发起多次请求,这些请求分别被转发a,b两条服务器,这两台服务器再去使用查询一下是否存在,如果不存在,插入的逻辑,很显然会往库里存放两条一样的数据。

            解决上述多服务器的时候可以使用sql查询重复插入,语法如下        

    INSERT INTO table(a,b) 
    SELECT a,b 
    FROM dual
    WHERE NOT EXISTS(
          SELECT *
          FROM table
          WHERE value = ?
    
    );

    原理是,s'q'l语句是在数据库上执行的。

    展开全文
  • <div><p>该提问来源于开源项目:rollbar/pyrollbar</p></div>
  • <p>1) If the mappings are not valid, the error returned by connect() is strange. For instance, if five mappings were to be validated, and all five received errors, the error object seems to be an ...
  • FI_MR_UNSPEC generally means to say that an application designer is not concerned with the chosen memory registration model of a provider and it will take what memory registration model that the ...
  • select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要 exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select2 ...

    exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:
      select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要
    exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select 2 from grade where ...”,那么返回的字段就是2,这个数字没有意义。所以exists子句不在乎返回什么,而是在乎是不是有结果集返回。(个人理解为是否存在这个这个条件下的数据)

    而not exists 和not in 分别是exists 和 in 的 对立面。

    exists (sql 返回结果集为真)  
    not exists (sql 不返回结果集为真)

    下面详细描述not exists的过程:

    如下:
    表A
    ID NAME  
    1   A1
    2   A2
    3   A3

    表B
    ID AID NAME
    1   1     B1
    2   2     B2  
    3   2     B3

    表A和表B是1对多的关系 A.ID => B.AID

    SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID=B.AID)(个人理解,先把SELECT * FROM B WHERE A.ID=B.AID存在的数据全取出来然后进行选择
    执行结果为
    1 A1
    2 A2
    原因可以按照如下分析
    SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
    --->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据

    SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)
    --->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据

    SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)
    --->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据

    NOT EXISTS 就是反过来
    SELECT ID,NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)
    执行结果为
    3 A3

    EXISTS = IN,意思相同不过语法上有点点区别,好像使用IN效率要差点,应该是不会执行索引的原因(个人理解:exist可以选择所有,in则为单个选择(单个选择的意思是select后面只有有一个列名))
    SELECT ID,NAME FROM A  WHERE ID IN (SELECT AID FROM B)

    NOT EXISTS = NOT IN ,意思相同不过语法上有点点区别
    SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B)

    between和not between用法

    
    SELECT * FROM A WHERE id BETWEEN 1 AND 2;//包括id为1和2的数
    
    
    
    SELECT * FROM A WHERE id not BETWEEN 1 AND 2;//不包括id为1和2的数

     

    展开全文
  • 下面介绍Mysql和Sqlite和Sqlserver中,根据select的条件判断... INSERT INTO books (name) SELECT 'SongXingzhu' FROM dual WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1) 二、Sqlite中:  由于Sqlit...

    下面介绍Mysql和Sqlite和Sqlserver中,根据select的条件判断是否插入。例如:

    一、Mysql中:

      INSERT INTO books (name) SELECT 'SongXingzhu' FROM dual WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)

    二、Sqlite中:

      由于Sqlite中没有临时表:dual 

      所以,需要这样写

      INSERT INTO books (name)  SELECT 'Songxingzhu'  WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)

    三、Sqlserver中:

      SqlServer中需要另一种写法:

      IF NOT EXISTS (SELECT id FROM books WHERE id = 1)  INSERT INTO books (name) SELECT 'Songxingzhu'

    转载于:https://www.cnblogs.com/songxingzhu/p/8074305.html

    展开全文
  • EXISTNOT EXIST的用法

    2012-07-02 16:27:45
    父查询exists(子查询), exists()如果子查询有数据则返回ture,就是满足触发条件了,可以执行父查询了。  如果括号内子查询没有返回记录,说明不存在,不满足触发条件,就...select * from student where not exi
  • <div><p>Consider non-open formats like Protobuf</p><p>该提问来源于开源项目:aspnet/SignalR</p></div>
  • check to a non-existant file should succeed if the parent directory exists, and we have write access to it, because we can then just create the file. This is needed for the "save"...
  • <div><p>This will make certifi work if packed in a zip, such as when running in an egg, or packaged using Pex or Subpar. <p>tests/test_zip: Test referencing certifi packaged in an egg. ...
  • exists : 强调的是是否返回结果集,不要求知道返回什么, 比如: select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要exists引导的子句有结果集返回,那么exists这个...
  • Local deploy failed: <code>/root/guay/GUAYFinal</code> does not exist assert.js:327 assert.ifError = function(err) { if (err) throw err; }; ^ <p>Error: HTTP error 400 at Error (native) at /usr/...
  • TestDataGrid does not exist

    2021-01-08 10:22:19
    ReflectionException : Class Webkul\Admin\DataGrids\TestDataGrid does not exist at bagisto/vendor/laravel/framework/src/Illuminate/Container/Container.php:826 822| 823| // If the class is null, it...
  • btrim does not exist

    2020-12-26 22:28:55
    FUNCTION latest.btrim does not exist <p>FYI: Tables names that start w/ _ are the MySQL versions of PostgreSQL tables.​ <p>My PostgreSQL version is 9.5beta1 on x86_64-pc-linux-gnu, compiled by gcc ...
  • <div><p>I would expect the namespace reconciler to handle the case where an rbac definition is applied that creates a service account in a namespace that doesn't exist yet. However, if I do this ...
  • Folder does not exist

    2020-12-27 09:29:55
    <p>But when I launch Fire.app in --project it states that assets/common does not exist. When it totally does. Where did I go wrong ?</p><p>该提问来源于开源项目:KKBOX/FireApp</p></div>
  • SQL 中not existnot in

    千次阅读 2014-11-11 14:24:09
     select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要 exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,066
精华内容 4,826
关键字:

existnotwhere