# Logical Operators and Conditional and Subquery Expressions

## Logical Operator Support

| Operator | Description   |
| -------- | ------------- |
| `AND`    | Logical AND   |
| `NOT`    | Negates value |
| `OR`     | Logical OR    |

## Conditional Expression Support

| Expression                                         | Description                                  |
| -------------------------------------------------- | -------------------------------------------- |
| `CASE WHEN condition THEN result ELSE default END` | Case operator                                |
| `COALESCE(val1, val2, ..)`                         | Returns the first non-null value in the list |

{% hint style="info" %}
Geospatial and array column projections are not supported in the `COALESCE` function and CASE expressions.
{% endhint %}

## Subquery Expression Support

| Expression                                 | Description                                                     |
| ------------------------------------------ | --------------------------------------------------------------- |
| `expr IN (subquery or list of values)`     | Evaluates whether expr equals any value of the IN list.         |
| `expr NOT IN (subquery or list of values)` | Evaluates whether expr does not equal any value of the IN list. |

#### Usage Notes

* You can use a subquery anywhere an expression can be used, subject to any runtime constraints of that expression. For example, a subquery in a CASE statement must return exactly one row, but a subquery can return multiple values to an IN expression.
* You can use a subquery anywhere a table is allowed (for example, `FROM` subquery), using aliases to name any reference to the table and columns returned by the subquery.
