Bird
Raised Fist0
SQLquery~10 mins

Operator precedence in WHERE in SQL - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Operator precedence in WHERE
Start: Evaluate WHERE clause
↓
Evaluate NOT operators
↓
Evaluate AND operators
↓
Evaluate OR operators
↓
Filter rows based on final condition
↓
Output rows
The WHERE clause conditions are evaluated following operator precedence: NOT first, then AND, then OR, to decide which rows to keep.
Execution Sample
SQL
SELECT * FROM employees
WHERE NOT department = 'Sales' AND salary > 50000 OR age < 30;
This query filters employees by combining NOT, AND, and OR conditions with precedence rules.
Execution Table
StepCondition EvaluatedEvaluation ResultExplanation
1NOT department = 'Sales'TRUE or FALSE per rowNOT flips TRUE/FALSE of department='Sales'
2NOT department = 'Sales' AND salary > 50000TRUE or FALSE per rowAND requires both sides TRUE
3(NOT department = 'Sales' AND salary > 50000) OR age < 30TRUE or FALSE per rowOR requires either side TRUE
4Filter rows where final condition is TRUERows keptOnly rows passing final condition remain
💡 All rows evaluated; rows not meeting final condition are excluded
Variable Tracker
Rowdepartment='Sales'NOT department='Sales'salary>50000AND resultage<30Final condition
1TRUEFALSETRUEFALSEFALSEFALSE
2FALSETRUETRUETRUEFALSETRUE
3FALSETRUEFALSEFALSETRUETRUE
4TRUEFALSEFALSEFALSETRUETRUE
Key Moments - 3 Insights
Why does NOT apply before AND and OR in the WHERE clause?
Because operator precedence rules say NOT is evaluated first, so in step 1 of the execution_table, NOT flips the condition before AND and OR combine results.
What happens if we ignore operator precedence and evaluate left to right?
The final filtered rows would be different because AND and OR combine conditions differently; the execution_table rows 2 and 3 show how AND and OR combine after NOT.
How does parentheses change the evaluation order?
Parentheses force evaluation inside them first, overriding precedence. Without parentheses, the order is NOT, then AND, then OR as shown in the concept_flow.
Visual Quiz - 3 Questions
Test your understanding
Look at the variable_tracker, what is the value of 'NOT department='Sales'' for row 2?
ANULL
BTRUE
CFALSE
DDepends on salary
💡 Hint
Check the second row under 'NOT department='Sales'' column in variable_tracker
At which step in the execution_table is the AND operator evaluated?
AStep 1
BStep 3
CStep 2
DStep 4
💡 Hint
Look at the 'Condition Evaluated' column for AND operator in execution_table
If we add parentheses like WHERE NOT (department = 'Sales' AND salary > 50000) OR age < 30, how does the evaluation order change?
ANOT applies to entire AND condition first
BAND applies after OR
COR applies before NOT
DNo change in order
💡 Hint
Parentheses force evaluation inside first, changing order from concept_flow
Concept Snapshot
WHERE clause evaluates conditions using operator precedence:
1. NOT is evaluated first
2. THEN AND combines conditions
3. THEN OR combines conditions
Use parentheses to override this order
This controls which rows are filtered in the query
Full Transcript
In SQL, the WHERE clause filters rows by evaluating conditions. The order of evaluation follows operator precedence: NOT is evaluated first, then AND, then OR. This means NOT flips conditions before AND combines them, and OR combines the results last. For example, in the query filtering employees, NOT department='Sales' is evaluated first for each row. Then AND combines that with salary>50000. Finally, OR includes rows where age<30. Parentheses can change this order by forcing evaluation inside them first. Understanding this order helps predict which rows the query returns.

Practice

(1/5)
1. In SQL, which operator is evaluated first in a WHERE clause without parentheses: AND or OR?
easy
A. OR is evaluated before AND
B. AND is evaluated before OR
C. Both are evaluated at the same time
D. It depends on the database system

Solution

  1. Step 1: Understand SQL operator precedence

    In SQL, AND has higher precedence than OR. This means AND conditions are evaluated before OR conditions when no parentheses are used.
  2. Step 2: Apply to WHERE clause evaluation

    Without parentheses, SQL evaluates all AND conditions first, then applies OR. This affects which rows match the query.
  3. Final Answer:

    AND is evaluated before OR -> Option B
  4. Quick Check:

    Operator precedence: AND > OR [OK]
Hint: Remember: AND before OR unless parentheses change it [OK]
Common Mistakes:
  • Thinking OR is evaluated before AND
  • Assuming both have equal precedence
  • Believing evaluation order depends on database
2. Which of the following WHERE clauses is syntactically correct in SQL?
easy
A. WHERE age > 30 OR AND salary < 50000 OR city = 'NY'
B. WHERE age > 30 AND OR salary < 50000 city = 'NY'
C. WHERE age > 30 salary < 50000 OR city = 'NY'
D. WHERE age > 30 AND salary < 50000 OR city = 'NY'

Solution

  1. Step 1: Check logical operator usage

    WHERE age > 30 AND salary < 50000 OR city = 'NY' uses AND and OR correctly between conditions. Options A, B, and D have misplaced or missing operators.
  2. Step 2: Validate syntax correctness

    SQL requires logical operators between conditions. WHERE age > 30 AND salary < 50000 OR city = 'NY' follows this rule, so it is syntactically valid.
  3. Final Answer:

    WHERE age > 30 AND salary < 50000 OR city = 'NY' -> Option D
  4. Quick Check:

    Logical operators must separate conditions [OK]
Hint: Operators must be between conditions, no missing or extra words [OK]
Common Mistakes:
  • Placing AND or OR without conditions
  • Missing operators between conditions
  • Using operators in wrong order
3. Given the table Employees with columns age, salary, and city, what rows will this query return?
SELECT * FROM Employees WHERE age > 30 OR salary < 50000 AND city = 'NY';
medium
A. Rows where age > 30 or (salary < 50000 and city = 'NY')
B. Rows where (age > 30 or salary < 50000) and city = 'NY'
C. Rows where age > 30 and salary < 50000 and city = 'NY'
D. Rows where age > 30 and (salary < 50000 or city = 'NY')

Solution

  1. Step 1: Apply operator precedence rules

    Since AND has higher precedence than OR, the condition is evaluated as: age > 30 OR (salary < 50000 AND city = 'NY').
  2. Step 2: Interpret the WHERE clause

    The query returns rows where either age is greater than 30, or both salary is less than 50000 and city is 'NY'.
  3. Final Answer:

    Rows where age > 30 or (salary < 50000 and city = 'NY') -> Option A
  4. Quick Check:

    AND evaluated before OR [OK]
Hint: AND groups tighter than OR without parentheses [OK]
Common Mistakes:
  • Ignoring operator precedence and grouping incorrectly
  • Assuming OR groups before AND
  • Misreading the condition order
4. Identify the error in this SQL query:
SELECT * FROM Employees WHERE age > 25 OR salary < 40000 AND;
medium
A. Missing FROM clause
B. Incorrect use of OR operator
C. Missing condition after AND operator
D. Incorrect column names

Solution

  1. Step 1: Analyze the WHERE clause syntax

    The query ends with AND; which means the AND operator is not followed by a condition. This is a syntax error.
  2. Step 2: Confirm other parts are correct

    The SELECT and FROM clauses are present and column names seem valid. The error is specifically the incomplete WHERE clause.
  3. Final Answer:

    Missing condition after AND operator -> Option C
  4. Quick Check:

    Logical operators must have conditions on both sides [OK]
Hint: Check that AND/OR always have conditions after them [OK]
Common Mistakes:
  • Leaving dangling AND or OR without conditions
  • Forgetting to complete WHERE clause
  • Assuming syntax is correct despite missing parts
5. You want to select employees who are either older than 40 or work in 'LA' with a salary less than 60000. Which WHERE clause correctly uses operator precedence to get this result?
Options:
A) WHERE age > 40 AND salary < 60000 OR city = 'LA'
B) WHERE (age > 40 OR salary < 60000) AND city = 'LA'
C) WHERE age > 40 OR (salary < 60000 AND city = 'LA')
D) WHERE (age > 40 OR city = 'LA') AND salary < 60000
hard
A. WHERE age > 40 OR (salary < 60000 AND city = 'LA')
B. WHERE (age > 40 OR salary < 60000) AND city = 'LA'
C. WHERE age > 40 AND salary < 60000 OR city = 'LA'
D. WHERE (age > 40 OR city = 'LA') AND salary < 60000

Solution

  1. Step 1: Understand the desired logic

    You want employees who are either older than 40, or who both work in 'LA' and have salary less than 60000.
  2. Step 2: Apply operator precedence and parentheses

    Since AND has higher precedence, a clause like WHERE age > 40 AND salary < 60000 OR city = 'LA' groups as (age > 40 AND salary < 60000) OR city = 'LA'. But for our desired logic age > 40 OR (salary < 60000 AND city = 'LA'), we need explicit parentheses as in WHERE age > 40 OR (salary < 60000 AND city = 'LA').
  3. Step 3: Compare options

    WHERE age > 40 AND salary < 60000 OR city = 'LA' groups as (age > 40 AND salary < 60000) OR city = 'LA' -- incorrect. WHERE (age > 40 OR salary < 60000) AND city = 'LA' requires city = 'LA' even for age > 40 -- incorrect. WHERE (age > 40 OR city = 'LA') AND salary < 60000 requires salary < 60000 always -- incorrect. WHERE age > 40 OR (salary < 60000 AND city = 'LA') correctly implements the logic.
  4. Final Answer:

    WHERE age > 40 OR (salary < 60000 AND city = 'LA') -> Option A
  5. Quick Check:

    Use parentheses to group AND conditions with OR correctly [OK]
Hint: Use parentheses to group AND conditions when mixed with OR [OK]
Common Mistakes:
  • Not using parentheses and misreading condition grouping
  • Assuming OR groups before AND
  • Changing logic by wrong parentheses placement
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard