在 PostgreSQL 中,当我们需要根据指定条件从单张表或者多张表中查询数据时,就可以在 SELECT 语句中添加 WHERE 子句,从而过滤掉我们不需要数据。

PostgreSQL 的 WHERE 子句用于指定条件而获取的数据,可以在单个表或多个表加入。

如果给定的条件满足,才返回从表中的具体数值。也可以使用 WHERE 子句过滤掉不希望出现的结果集行。

WHERE 子句不仅是在 SELECT 语句中使用,但它也可用于在 UPDATE,DELETE 语句等。

语法

以下是 SELECT 语句中使用 WHERE 子句从数据库中读取数据的通用语法:SELECT column1, column2, columnN

FROM table_name

WHERE [condition1]

我们可以在 WHERE 子句中使用比较运算符或逻辑运算符,例如 >,

创建 COMPANY 表 ,数据内容如下:w3cschooldb# select * from COMPANY;

id | name | age | address | salary

----+-------+-----+-----------+--------

1 | Paul | 32 | California| 20000

2 | Allen | 25 | Texas | 15000

3 | Teddy | 23 | Norway | 20000

4 | Mark | 25 | Rich-Mond | 65000

5 | David | 27 | Texas | 85000

6 | Kim | 22 | South-Hall| 45000

7 | James | 24 | Houston | 10000

(7 rows)

以下几个实例我们使用逻辑运算符来读取表中的数据。

AND

找出 AGE(年龄) 字段大于等于 25,并且 SALARY(薪资) 字段大于等于 65000 的数据:w3cschooldb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;

id | name | age | address | salary

----+-------+-----+------------+--------

4 | Mark | 25 | Rich-Mond | 65000

5 | David | 27 | Texas | 85000

(2 rows)

OR

找出 AGE(年龄) 字段大于等于 25,或者 SALARY(薪资) 字段大于等于 65000 的数据:w3cschooldb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;

id | name | age | address | salary

----+-------+-----+-------------+--------

1 | Paul | 32 | California | 20000

2 | Allen | 25 | Texas | 15000

4 | Mark | 25 | Rich-Mond | 65000

5 | David | 27 | Texas | 85000

(4 rows)

NOT NULL

在公司表中找出 AGE(年龄) 字段不为空的记录:w3cschooldb=# SELECT * FROM COMPANY WHERE AGE IS NOT NULL;

id | name | age | address | salary

----+-------+-----+------------+--------

1 | Paul | 32 | California | 20000

2 | Allen | 25 | Texas | 15000

3 | Teddy | 23 | Norway | 20000

4 | Mark | 25 | Rich-Mond | 65000

5 | David | 27 | Texas | 85000

6 | Kim | 22 | South-Hall | 45000

7 | James | 24 | Houston | 10000

(7 rows)

LIKE

在 COMPANY 表中找出 NAME(名字) 字段中以 Pa 开头的的数据:w3cschooldb=# SELECT * FROM COMPANY WHERE NAME LIKE 'Pa%';

id | name | age |address | salary

----+------+-----+-----------+--------

1 | Paul | 32 | California| 20000

IN

以下 SELECT 语句列出了 AGE(年龄) 字段为 25 或 27 的数据:w3cschooldb=# SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );

id | name | age | address | salary

----+-------+-----+------------+--------

2 | Allen | 25 | Texas | 15000

4 | Mark | 25 | Rich-Mond | 65000

5 | David | 27 | Texas | 85000

(3 rows)

NOT IN

以下 SELECT 语句列出了 AGE(年龄) 字段不为 25 或 27 的数据:w3cschooldb=# SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );

id | name | age | address | salary

----+-------+-----+------------+--------

1 | Paul | 32 | California | 20000

3 | Teddy | 23 | Norway | 20000

6 | Kim | 22 | South-Hall | 45000

7 | James | 24 | Houston | 10000

(4 rows)

BETWEEN

以下 SELECT 语句列出了 AGE(年龄) 字段在 25 到 27 的数据:w3cschooldb=# SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;

id | name | age | address | salary

----+-------+-----+------------+--------

2 | Allen | 25 | Texas | 15000

4 | Mark | 25 | Rich-Mond | 65000

5 | David | 27 | Texas | 85000

(3 rows)

子查询

以下的 SELECT 语句使用了 SQL 的子查询,子查询语句中读取 SALARY(薪资) 字段大于 65000 的数据,然后通过 EXISTS 运算符判断它是否返回行,如果有返回行则读取所有的 AGE(年龄) 字段。w3cschooldb=# SELECT AGE FROM COMPANY

WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

age

-----

32

25

23

25

27

22

24

(7 rows)

以下的 SELECT 语句同样使用了 SQL 的子查询,子查询语句中读取 SALARY(薪资) 字段大于 65000 的 AGE(年龄) 字段数据,然后用 > 运算符查询大于该 AGE(年龄) 字段数据:w3cschooldb=# SELECT * FROM COMPANY

WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

id | name | age | address | salary

----+------+-----+------------+--------

1 | Paul | 32 | California | 20000

postgresql 动态添加过滤条件_PostgreSQL WHERE 子句相关推荐

  1. postgresql 动态添加过滤条件_XsqlFilterResult----动态生成sql语句的类,过滤一些为空的查询条件...

    XsqlBuilder用于可以动态构造sql语句,避免在构造sql时使用过多的 if 判断,与SafeSqlProcesser集成提供防止sql注入攻击,与DataModifier集成完成数据类型的转 ...

  2. postgresql 动态添加过滤条件_通过窗口函数进行过滤导致Postgresql

    好的,最初这只是我们与我的一个朋友的笑话,但它变成了有趣的技术问题:) 我有以下的表格: CREATE TABLE stuff ( id serial PRIMARY KEY, volume inte ...

  3. java中动态查询条件,Java实现动态添加查询条件

    今天遇到一个问题,就是需要根据前端页面发送的条件查询数据库记录,但是前端发送的条件是不确定的.如果使用mybatis的xml方法可以使用if标签灵活的添加判断条件,但是现在我使用的就是单纯的sql. ...

  4. mybatis循环Map动态添加查询条件

    使用Map存储键值对,用于动态的拼接where条件后的 列和值 dao层接口: public List<Map<String,Object>> getData(@Param(& ...

  5. 基于layui的动态添加条件查询ui插件

    layuiExtend 项目介绍 最近做一个档案系统,发现字段超多,查询页面布局不是很好弄,于是就想着干脆写一个动态添加条件的ui插件. 因为是用的layui框架写的系统,所以就直接基于layui编写 ...

  6. MySQL HAVING:指定过滤条件

    在 MySQL SELECT 语句中,除了能使用 GROUP BY 子句分组数据外,还可以使用 HAVING 子句过滤分组,在结果集中规定了包含哪些分组和排除哪些分组. 语法格式如下: HAVING ...

  7. MySQL 指定过滤条件

    MySQL SELECT 语句,除了能使用 GROUP BY 子句分组数据外,还可以使用 HAVING 子句过滤分组,在结果集中规定了包含哪些分组和排除哪些分组. 语法格式如下: HAVING < ...

  8. 巧用Arcgis Server的REST接口实现OL2中WMS添加过滤

    概述: 在实际的应用中,很多时候我们需要对展示的图层进行属性或者空间的过滤,在Geoserver发布的WMS中,可以通过CQL_FILTER来设置过滤条件,但是Arcgis Server发布的WMS不 ...

  9. Mysql动态数据多条件查询

    Mysql动态数据多条件查询 前言 有的时候,我们进行数据的数据查询的时候,我们会加入筛选条件. 例如: select * from user where username = ? // ? 指的是自 ...

最新文章

  1. android 序列化_Android高级架构进阶之数据传输与序列化
  2. php示例代码使用mysql_fetch_assoc函数
  3. Nginx基础入门之nginx基础配置项介绍(2)
  4. hbase shell中命令无法删除?
  5. 在AWS控制台里根据需要打开指定的通信端口
  6. 阿姆斯特朗数 matlab,数学实验报告
  7. 漫步数学分析番外六(上)
  8. python batch normalization_Batch Normalization 详解
  9. css如何设置固定位置,用css固定位置的方法
  10. WES 软件安装 及Bundel数据的下载
  11. 【WC2013】糖果公园
  12. IP转发的最长前缀匹配
  13. java后台开发必备的9大类基础工具,你集齐了?
  14. PTA程序设计基础题目集(1)
  15. 软件测试基础 ——— 测试分析
  16. SpringBoot自动解压Gzip请求
  17. Abp(.NetCore)开发与发布过程3-部署Ubuntu站点
  18. DHT11温湿度传感器(zigbee)
  19. C#-Winform知识点
  20. shopex mysql 数据库服务器_win2003以isapi的方式配置php+mysql环境(安装了shopEX) 毕竟我是杨小飞i...

热门文章

  1. 男朋友转行 Java 失败,找不到工作
  2. 十天小白训练营day02—古诗作业
  3. ubuntu安装AIR微博方法
  4. linux 识别u盘,移动硬盘,固定硬盘
  5. 你玩的是互联网还是寂寞
  6. 基于DEM的降雨淹没算法
  7. linux网卡驱动源码分析
  8. 甘霖超级计算机,中国首位!甘霖获超算杰出新人奖,“神威·太湖之光”绽放异彩...
  9. 红帽上安装wireshark
  10. 语义分割网络系列1——FCN