| --- |
| layout: global |
| title: SELECT |
| displayTitle: WHERE clause |
| license: | |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --- |
| |
| ### Description |
| |
| The `WHERE` clause is used to limit the results of the `FROM` |
| clause of a query or a subquery based on the specified condition. |
| |
| ### Syntax |
| |
| ```sql |
| WHERE boolean_expression |
| ``` |
| |
| ### Parameters |
| |
| * **boolean_expression** |
| |
| Specifies any expression that evaluates to a result type `boolean`. Two or |
| more expressions may be combined together using the logical |
| operators ( `AND`, `OR` ). |
| |
| ### Examples |
| |
| ```sql |
| CREATE TABLE person (id INT, name STRING, age INT); |
| INSERT INTO person VALUES |
| (100, 'John', 30), |
| (200, 'Mary', NULL), |
| (300, 'Mike', 80), |
| (400, 'Dan', 50); |
| |
| -- Comparison operator in `WHERE` clause. |
| SELECT * FROM person WHERE id > 200 ORDER BY id; |
| +---+----+---+ |
| | id|name|age| |
| +---+----+---+ |
| |300|Mike| 80| |
| |400| Dan| 50| |
| +---+----+---+ |
| |
| -- Comparison and logical operators in `WHERE` clause. |
| SELECT * FROM person WHERE id = 200 OR id = 300 ORDER BY id; |
| +---+----+----+ |
| | id|name| age| |
| +---+----+----+ |
| |200|Mary|null| |
| |300|Mike| 80| |
| +---+----+----+ |
| |
| -- IS NULL expression in `WHERE` clause. |
| SELECT * FROM person WHERE id > 300 OR age IS NULL ORDER BY id; |
| +---+----+----+ |
| | id|name| age| |
| +---+----+----+ |
| |200|Mary|null| |
| |400| Dan| 50| |
| +---+----+----+ |
| |
| -- Function expression in `WHERE` clause. |
| SELECT * FROM person WHERE length(name) > 3 ORDER BY id; |
| +---+----+----+ |
| | id|name| age| |
| +---+----+----+ |
| |100|John| 30| |
| |200|Mary|null| |
| |300|Mike| 80| |
| +---+----+----+ |
| |
| -- `BETWEEN` expression in `WHERE` clause. |
| SELECT * FROM person WHERE id BETWEEN 200 AND 300 ORDER BY id; |
| +---+----+----+ |
| | id|name| age| |
| +---+----+----+ |
| |200|Mary|null| |
| |300|Mike| 80| |
| +---+----+----+ |
| |
| -- Scalar Subquery in `WHERE` clause. |
| SELECT * FROM person WHERE age > (SELECT avg(age) FROM person); |
| +---+----+---+ |
| | id|name|age| |
| +---+----+---+ |
| |300|Mike| 80| |
| +---+----+---+ |
| |
| -- Correlated Subquery in `WHERE` clause. |
| SELECT * FROM person AS parent |
| WHERE EXISTS ( |
| SELECT 1 FROM person AS child |
| WHERE parent.id = child.id AND child.age IS NULL |
| ); |
| +---+----+----+ |
| |id |name|age | |
| +---+----+----+ |
| |200|Mary|null| |
| +---+----+----+ |
| ``` |
| |
| ### Related Statements |
| |
| * [SELECT Main](sql-ref-syntax-qry-select.html) |
| * [GROUP BY Clause](sql-ref-syntax-qry-select-groupby.html) |
| * [HAVING Clause](sql-ref-syntax-qry-select-having.html) |
| * [ORDER BY Clause](sql-ref-syntax-qry-select-orderby.html) |
| * [SORT BY Clause](sql-ref-syntax-qry-select-sortby.html) |
| * [CLUSTER BY Clause](sql-ref-syntax-qry-select-clusterby.html) |
| * [DISTRIBUTE BY Clause](sql-ref-syntax-qry-select-distribute-by.html) |
| * [LIMIT Clause](sql-ref-syntax-qry-select-limit.html) |
| * [OFFSET Clause](sql-ref-syntax-qry-select-offset.html) |
| * [CASE Clause](sql-ref-syntax-qry-select-case.html) |
| * [PIVOT Clause](sql-ref-syntax-qry-select-pivot.html) |
| * [UNPIVOT Clause](sql-ref-syntax-qry-select-unpivot.html) |
| * [LATERAL VIEW Clause](sql-ref-syntax-qry-select-lateral-view.html) |