SQL之过滤数据(where子句)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL之过滤数据(where子句)相关的知识,希望对你有一定的参考价值。

1.使用基础where子句

select prod_id,prod_price
from Products
where prod_price = 3.49;

检索products表中两个列,只返回prod_price值等于3.49的行。

注意:由于数据库软件的指定。结果可能是3.490,3.4900。

2.where子句操作符

image

注意:并非所有数据库软件都支持所有操作符。

2.1具体例子:

价格小于10的产品:

select prod_name, prod_price
from Products
where prod_price < 10;

id不是DLL01项:

select vent_id,prod_name
from Products
where vent_id <> \'DILL01\';

select vent_id,prod_name
from Products
where vent_id != \'DILL01\';

价格在5和10之间的所有产品:

select prod_name, prod_price
from Products
where prod_price between 5 and 10 ;

空值(null)

select cust_name
from Customers
where cust_email IS NULL;

3.组合where子句

AND操作符

select prod_id,prod_price,prod_name
from Products
where prod_id = \'DLL01\' and prod_price <=4;

同时满足prod_id等于DLL01和prod_price小于等于4。

OR操作符

select prod_id,prod_price,prod_name
from Products
where prod_id = \'DLL01\' or prod_price <=4;

相对于and操作符,只要满足其中一条就可以。

为了消灭歧义,在组合where子句中使用圆括号。如下两个语句有着截然不同的意思:

select prod_id,prod_price,prod_name
from Products
where (prod_id = \'DLL01\' or prod_id = \'BRS01\')
       and prod_price >= 10;

首先会过滤括号内的条件

select prod_id,prod_price,prod_name
from Products
where prod_id = \'DLL01\' or prod_id = \'BRS01\'
       and prod_price >= 10;

由于SQL语言优先处理AND操作符,所以结果就变成满足prod_id=\'DLL01’或者prod_id=‘BRS01’+ prod_price>=10

IN操作符

select prod_id,prod_price,prod_name
from Products
where vend_id IN (\'DLL01\', \'BRS01\')
order by prod_name;

NOT操作符

select prod_id,prod_price,prod_name
from Products
where not vent_id = \'DLL01\'
order by prod_name;

也可以用<>,!=操作符,具体的看数据库软件的设置

以上是关于SQL之过滤数据(where子句)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JSON 上应用复杂的数据过滤器,例如 SQL where 子句

访问 SQL 子查询 WHERE 子句不过滤结果 [关闭]

SQL中Where与Having的区别

SQL学习04——过滤数据

SQL Server XML 列上的 Where 子句过滤属性 AND 值

如果 where 子句已经修复,如何加快 spark sql 过滤器查询?