zoukankan      html  css  js  c++  java
  • SQL 中in exists 和临时表用法

        最近在做项目时,遇到一个问题,同组的一位大哥,帮我解决了,先谢谢他。我写此文章来给大家参考.

        直接来看示例,先给出两张表。

     表A:

      

       表B:

      

    这是两张表。我们用表B里的两个字段来查表A的记录

    先看一下SQL 语句:

    SELECT * FROM A
    WHERE bID IN(SELECT bID FROM B) AND
    bName 
    IN(SELECT bName FROM B)

    上面是代码和结果,我用了两个IN 中间用AND来查结果,本来的意思是想取结果中的第一条记录,没想到全取出来了

    这样结果就不是我们想要的了,其实想一下,也能明白,IN里要满足条件都可以,注意再看一下查出来的结果,都满足条件,本来表A中的第一条和最后一条为空的都没查出来。

    如果你是想取这样的结果,那也可以了,可是如果是只想取第一条呢。怎么办。

    请看结果:

    上面是用EXISTS来做查询的,这样就不会出现刚上面的问题了。

    上面语句中有个select 1 from B这句,可能有不明白,你在SQL里运行一下就明白了。其实就是一个无列名的列,数据全为1,你想一下,我只查一条,不就只有一个1这条记录的数据了吗,这样执行速度也快。

    同时还可以用临时表来做。

    看结果:

    看出来了吗,把B的结果放入临时表中,用日临时表去查,可以这个示例中执行起来并没有上面的快,如果你的语过多的话,日临时表执行的速度就快了。

    而且主是代码可以少写点了,看成变量来用。这样用起来也方便!

    查询还好,如果你是在做删除操作呢,岂不是误删除了好多数据。后果可想而知!

    已下是一个临时表的文章可以看一下:http://database.51cto.com/art/200907/132827.htm

  • 相关阅读:
    最有价值的专家--微软官方网站
    CC++初学者编程教程(16) 搭建Xcode cocos2dx开发环境--尹成老师博客
    微软最具价值的专家之毛星云博客
    Winsock IO模型之IOCP模型
    IOCP模型与网络编程
    关于proc索引的创建
    查找表存在于那些proc中
    Sql 时间做条件
    Sql 无指定条件,防并发update
    sql 根据客户需用 增减查询字段
  • 原文地址:https://www.cnblogs.com/stalwart/p/1902981.html
Copyright © 2011-2022 走看看