zoukankan      html  css  js  c++  java
  • MySQL数据库(10)----IN 和 NOT IN 子查询

      当子查询要返回多个行来与外层查询进行比较运算时,可以使用运算符 IN 和 NOT IN。它们会测试某个给定的比较值是否存在于某一组值里。如果外层查询里的行与子查询返回的某一个行相匹配,那么 IN 的结果为真。如果外层查询里的行与子查询返回的所有行都不匹配,那么 NOT IN 的结果为真。

    1. 下面两条语句分别使用 IN 和 NOT IN 来查找那些在 absence 表里有缺勤记录的学生和没有缺勤记录的学生:

    mysql> SELECT * FROM student WHERE student_id IN (SELECT student_id FROM absence);
    Empty set (0.05 sec)

    没有结果,说明全部学生都是满勤,可以用下面的语句来验证:

    mysql> SELECT * FROM student WHERE student_id NOT IN (SELECT student_id FROM absence);
    +--------+-----+------------+
    | name   | sex | student_id |
    +--------+-----+------------+
    | Jim    | M   |          1 |
    | Tom    | M   |          2 |
    | Travis | M   |          5 |
    | Steve  | M   |          6 |
    | Hellen | M   |          7 |
    | Julian | M   |          8 |
    | Lily   | F   |          9 |
    +--------+-----+------------+

    2. IN 和 NOT IN 还可以用于返回多个列的子查询。也就是说,可以把它们与表的子查询一起使用。此时,需要使用一个行构造器来指定与各列进行测试的比较值。

    mysql> SELECT last_name, first_name,city,state FROM president
        -> WHERE (city,state) IN
        -> (SELECT city,state FROM president
        -> WHERE last_name = 'Roosevelt');

    这条查询的意思是找出 president 表里与 ‘Roosevelt’ 是同乡的那些人。

  • 相关阅读:
    XToDo未完成内容标记管理器
    FuzzyAutocomplete代码模糊匹配智能提示
    KSImageNamed项目图片智能提示
    Backlight当前行背景高亮显示
    VVDocumenter规范注释生成器
    window.frames[]在Firefox下无法兼容的解决方式
    加密算法(扩展知识:Base64编码)
    Single Pattern(单例模式)
    C语言的基本数据类型长度
    移位操作和二进制知识
  • 原文地址:https://www.cnblogs.com/dongling/p/5713768.html
Copyright © 2011-2022 走看看