• PostgreSQL中的数组与Any


    any 操作符

    where expression operator any (subquery)
    where expression operator some (subquery)
    
    其实any和some在这里是同等效的,子查询的结果集只能是一个字段,左边表达式使用operator对结果集的每一行进行一次比较运算,
    如果有一个运算结果是'TRUE',则表达式结果为'TRUE',如果比较结果全部是'FALSE'表达式结果才是'FALSE'。
    
    expression表达式一般为:字段
    operator操作符为:      >, <, =, <>, >=, <=
    any可以与some替换 
    subquery子查询:        返回的必须是一列
    
    
    > any  大于子查询结果中的某个值
    
    < any  小于子查询结果中的某个值
    
    >= any 大于或等于子查询结果中的某个值
    
    <= any 小于或等于子查询结果中的某个值
    
    = any  等于子查询结果中的某个值,相当于IN
    
    != any 不等于子查询结果中的某个值 
    
    
    
    select film_id,title,length from film 
            where length >= any (
                select max(film.length) from film inner join film_category using(film_id)
            );

    all 操作符

    where expression operator all(subquery)
    
    同样子查询中仍只能返回一个字段,与子查询结果集每一行进行比较结果全部是'TRUE'表达式结果才是'TRUE',否则为'FALSE'
    
    > all  大于子查询结果中的所有值
    
    < all  小于子查询结果中的所有值
    
    >= all 大于或等于子查询结果中的所有值
    
    <= all 小于或等于子查询结果中的所有值
    
    = all  等于子查询结果中所有值(除非子查询的结果全部相等,所以实际上没什么意义)
    
    != all 不等于子查询结果中的任何一个值,相当于NOT IN
    
    
    
    select film_id,title,length from film 
          where length > all (
                select round(avg(length),2) as avg_length from film group by rating
            )
            order by length desc;

    使用in的时候,忽略为null的,不会查询出comm为null的数据

    select * from emp e where e.comm in (300, 500, null);

    2. 使用not in的时候,如果 not in后面的选项中没有null,只会查询从comm列不为空的列中过滤,会过滤掉comm为null的数据

    select * from emp e where e.comm not in (300, 500);

    3. 使用not in 的时候,如果not in后面的选项中有null,不会查询出来任何数据。sql语句本身直接返回false,所以使用not in的时候,要保证in中的条件不会出现null的情况,不然可能会出现意想不到的情况。

    select * from emp e where e.comm not in (300, 500, null);

    查询为  字段  course_id  null

    CourseId        pq.StringArray `json:"course_id" gorm:"type:text[]"`         //课程id

     course_id  is null

     

     

     

    转载:https://blog.csdn.net/weixin_34101229/article/details/85572936

  • 相关阅读:
    Linux--sed命令
    Linux--cut命令
    Android--aapt命令
    Shell--基础知识
    Linux--vim编辑器和文件恢复
    Linux--基本命令
    Linux--添加用户
    Linux--网络配置
    SpringCloud--Ribbon负载均衡
    第一阶段冲刺4
  • 原文地址:https://www.cnblogs.com/ithubb/p/16092834.html
Copyright © 2020-2023  润新知