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

  • 相关阅读:
    小小小康
    GC日志补充
    一次GC问题定位
    mycat1.5~1.6的一个bug
    [转] java Statement和PreparedStatement批量更新
    java 中的instanceof 运算符
    Java学习篇之数组方法
    iOS7适配的一点小技巧
    iOS 中正确切换摄像头&正确实现设置帧率的方式
    iOS 音量键事件监控响应
  • 原文地址:https://www.cnblogs.com/stalwart/p/1902981.html
Copyright © 2011-2022 走看看