还没时间看,exists用的少  ==》当你只需要判断后面的查询结果是否存 在时使用exists()

http://edu.codepub.com/2011/0208/29218.php

今天正好做一个查询,两个表中过滤数据,当T1中字段F1在T2表的F2中存在时,返回这条件数据。刚刚开始觉得简单,就想到子查询和连接查询,但是发现 两个表中如果数据量多时,这样就不行,并且效率不高,后来想到用Mysql中的In函数

今天正好做一个查询,两个表中过滤数据,当T1中字段F1在T2表的F2中存在时,返回这条件数据。刚刚开始觉得简单,就想到子查询和连接查询,但是发现 两个表中如果数据量多时,这样就不行,并且效率不高,后来想到用Mysql中的In函数,当用完后,也做出来了。但是想了一下,觉得应该有更好用的才对, 于是打开MYSQL手册,查IN,结果找到exist函数。 
exist:用法如下: 
select * from T1 where exist(select * from T2 where T1.F1=T2.F2); 
其中,exist()中返回的只有TRUE和FALSE,这样过滤的速度也比In快,也不用很麻烦。 
其实exist()用的最常见的,应该是在数据的插入,当数据库中存在时,不要插入数据,以防止数据重复插入。 
Insert into T1 set F1=’xxx’,F2=’xxcc’ where not exist(select * from T1 where F1=’xxxx’); 
上面意思就是当表T1中F1存在值为xxxx的值记录时,不插入数据。

实际上确实如此。当你只需要判断后面的查询结果是否存在时使用exists(); 
                   当你需要使用里面的结果集的时候必须用in();

比方说: select fathername from atable where exists( select id from studenttable where name='tao2ge'); 
     
     当要查询一个叫淘二哥同学的爸爸的时候,需要使用exists();

但如果有一群学生需要查爸爸。 那就得用in了。 
    select fathername from atable where fatherid in (select id from student);

mysql exists 如何使用的更多相关文章

  1. mysql 有报错  ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

    sh-4.1# /etc/init.d/mysqld status ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql ...

  2. Centos安装完MariaDB后启动不了 MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

    [root@admin-node subsys]# service mysql startStarting MySQL. ERROR! [root@admin-node subsys]# servic ...

  3. ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

    通过service mysql status 命令来查看mysql 的启动状态 报错如下: ERROR! MySQL is not running, but lock file (/var/lock/ ...

  4. Linux - mysql 异常: ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

    问题描述 ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists 解决方案 删除:/var/lock/su ...

  5. Mysql exists 与 in

    今天公司同事反馈一个SQL语句删除数据删除了一个小时,还没有删除完,强制中断. 第一眼看到 exists 的时候,脑子里要有这么个概念: Oracle exists 的效率比in 高.而Mysql 则 ...

  6. MySQL exists的用法介绍

    有一个查询如下: 1 SELECT c.CustomerId, CompanyName   2 FROM Customers c   3 WHERE EXISTS(   4     SELECT Or ...

  7. mysql exists 和 in的效率比较

    这条语句适用于a表比b表大的情况 select * from ecs_goods a where cat_id in(select cat_id from ecs_category b); 这条语句适 ...

  8. MySQL - exists与in的用法

    [1]exists 对外表用loop逐条查询,每次查询都会查看exists的条件语句. 当 exists里的条件语句能够返回记录行时(无论记录行是多少,只要能返回),条件就为真 , 返回当前loop到 ...

  9. mysql exists及not exists的使用

    对exists及not exists的使用根据下面的示例进行解释 如sql: select sname from student where exists (select * from score)) ...

随机推荐

  1. android getWidth()和getMeasuredWidth()方法的区别

    getWidth() Return the width of the your view. Returns The width of your view, in pixels. 源代码: public ...

  2. 洛谷 P3749: LOJ 2146: [SHOI2017]寿司餐厅

    题目传送门:LOJ #2146. 题意简述: 有 \(n\) 种寿司,第 \(i\) 种寿司的类型为 \(a_i\). 如果你吃了第 \(i\) 种到第 \(j\) 种寿司,你会得到 \(d_{i,j ...

  3. gbk文件转为utf8文件

    convmv -f gbk -t utf- --notest -r ./

  4. django和flask关于oralce数据库配置

    Django中关于Oracle数据库配置 # 使用SERVICE_NAME DATABASES = { 'default': { 'ENGINE': 'django.db.backends.oracl ...

  5. 网络抓包神器-Charles使用指南

    http://blog.csdn.net/liulanghk/article/details/46342205 目录 概述 安装 显示模式 PC端抓包 移动应用抓包 其他技能 charles使用问题汇 ...

  6. (四)Dubbo Admin管理控制台

    Dubbo Admin管理控制台 在dubbo2.6.0往后的版本在dubbo发布包中就没有dubbo-admin了,而是在incubator-dubbo-ops(https://github.com ...

  7. hdu 5427(排序水题)

    排序 年轻的排前面 名字中可能有空格 Sample Input21FancyCoder 19962FancyCoder 1996xyz111 1997 Sample OutputFancyCoderx ...

  8. 如何用prometheus监控k8s集群中业务pod的metrics

    一般,我们从网上看到的帖子和资料, 都是用prometheus监控k8s的各项资源, 如api server, namespace, pod, node等. 那如果是自己的业务pod上的自定义metr ...

  9. tidb 升级步骤

    1.检查ansible版本,正常情况下,2.1 rc3需要兼容ansible 2.5以上的版本 $ ansible --version 2.检查python两个模块jinja2需要升级到2.9.6或以 ...

  10. sqoop1.4.6数据迁移

    sqoop介绍 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具. 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS.HIVE.HBASE等数据存 ...