We use ORDER BY to sort data. Sometimes, data has empty spots called NULLs. Knowing how NULLs sort helps us see data clearly.
ORDER BY with NULL values behavior in SQL
SELECT column1, column2 FROM table_name ORDER BY column_name [ASC | DESC] [NULLS FIRST | NULLS LAST];
ASC means ascending order (smallest to largest).
DESC means descending order (largest to smallest).
NULLS FIRST puts NULL values at the start.
NULLS LAST puts NULL values at the end.
SELECT name, score FROM players ORDER BY score ASC;
SELECT name, score FROM players ORDER BY score DESC NULLS LAST;
SELECT name, score FROM players ORDER BY score ASC NULLS LAST;
This creates a table of players with some scores missing (NULL). Then it sorts players by score from lowest to highest, but puts players with no score at the end.
CREATE TABLE players (name VARCHAR(20), score INT); INSERT INTO players VALUES ('Alice', 50), ('Bob', NULL), ('Charlie', 70), ('Diana', NULL), ('Eve', 60); SELECT name, score FROM players ORDER BY score ASC NULLS LAST;
Different databases may treat NULLs differently by default.
Using NULLS FIRST or NULLS LAST helps control where NULLs appear in your sorted list.
Without specifying, some databases put NULLs first in ascending order, others put them last.
ORDER BY sorts data by column values.
NULL values are special and can appear at the start or end when sorting.
Use NULLS FIRST or NULLS LAST to decide where NULLs go in your sorted results.
Practice
ORDER BY clause do when sorting a column that contains NULL values by default in SQL?Solution
Step 1: Understand default
By default, when sorting ascending, SQL placesORDER BYbehaviorNULLvalues last becauseNULLmeans unknown or missing data.Step 2: Confirm
SinceNULLplacement in ascending orderNULLis considered neither high nor low, it appears after all actual values in ascending order.Final Answer:
It places NULL values at the end when sorting in ascending order. -> Option CQuick Check:
Default ascending sort puts NULL last [OK]
- Thinking NULLs are treated as zero
- Assuming NULLs appear first by default
- Believing NULLs cause errors in ORDER BY
score in ascending order but place NULL values first?Solution
Step 1: Recall correct syntax for NULL placement
The correct syntax placesNULLS FIRSTorNULLS LASTafter the sort direction (ASC or DESC).Step 2: Match syntax with options
ORDER BY score ASC NULLS FIRST usesORDER BY score ASC NULLS FIRST, which is the correct order of keywords.Final Answer:
ORDER BY score ASC NULLS FIRST -> Option AQuick Check:
NULLS FIRST comes after ASC/DESC [OK]
- Placing NULLS FIRST before column name
- Mixing order of ASC/DESC and NULLS FIRST
- Using NULLS FIRST without ASC or DESC
students with column grade containing values (85, NULL, 90, 70), what is the result of this query?SELECT grade FROM students ORDER BY grade DESC NULLS LAST;
Solution
Step 1: Sort grades descending with NULLs last
Descending order sorts from highest to lowest: 90, 85, 70. NULLs go last as specified.Step 2: Arrange final output
So the order is 90, 85, 70, then NULL at the end.Final Answer:
[90, 85, 70, NULL] -> Option BQuick Check:
DESC with NULLS LAST puts NULL at end [OK]
- Placing NULL at start despite NULLS LAST
- Ignoring NULLS LAST and using default NULL position
- Sorting ascending instead of descending
SELECT name FROM employees ORDER BY salary NULLS FIRST ASC;
Solution
Step 1: Check correct syntax order for ORDER BY
The correct syntax isORDER BY salary ASC NULLS FIRST. NULLS FIRST must come after ASC or DESC.Step 2: Identify error in given query
The query places NULLS FIRST before ASC, which is invalid syntax.Final Answer:
The order of NULLS FIRST and ASC is incorrect. -> Option AQuick Check:
NULLS FIRST must follow ASC/DESC [OK]
- Placing NULLS FIRST before ASC/DESC
- Adding commas in ORDER BY clause
- Assuming NULLS FIRST is invalid with ASC
price ascending but ensure that products with unknown price (NULL) appear at the top. Which query achieves this correctly?Solution
Step 1: Understand requirement for NULL placement
We want ascending order butNULLvalues first, so useNULLS FIRSTafterASC.Step 2: Check syntax correctness
SELECT * FROM products ORDER BY price ASC NULLS FIRST; usesORDER BY price ASC NULLS FIRST, which is valid and meets the requirement.Final Answer:
SELECT * FROM products ORDER BY price ASC NULLS FIRST; -> Option DQuick Check:
ASC with NULLS FIRST puts NULLs on top [OK]
- Placing NULLS FIRST before ASC
- Using NULLS LAST instead of NULLS FIRST
- Misordering keywords causing syntax errors
Ready to prove it?
Pass the test and this pattern moves unknown
