FAQ: Queries - Between

This community-built FAQ covers the “Between” exercise from the lesson “Queries”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Web Development
Data Science

Learn SQL

FAQs on the exercise Between

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

So how do you include ‘Z’, if last letters are not inclusive?

1 Like

If we look at the ordinals, we see that a comes after Z, so,

WHERE name IS BETWEEN 'W' AND 'a';
Query Results
id 	name 	genre 	year 	imdb_rating
142 	Warm Bodies 	horror 	2013 	6.9
89 	Wedding Crashers 	comedy 	2005 	7.0
99 	What Lies Beneath 	horror 	2000 	6.6
162 	What Women Want 	romance 	2000 	6.4
144 	Wolf 	horror 	1994 	6.2
98 	World War Z 	horror 	2013 	7.0
48 	X-Men: Days of Future Past 	action 	2014 	8.1
47 	X-Men: The Last Stand 	action 	2006 	6.8
130 	Zombieland 	horror 	2009 	7.7
1 Like

how to use between operator to search a movies where imdb_rating between 8 to 7?

Hi! In the second exercise, the 70’s are between 1971 and 1980. Decades, centuries start in “XXX1” and end in “XXY0”. So, it’s not between 1970 and 1979.

1 Like

You would use after the WHERE clause to define a range for the condition. Remember that the BETWEEN clause takes 2 numbers (“from” and “up to but not including”) :

SELECT * FROM movies WHERE imdb_rating BETWEEN 7 AND 9;

This takes all data from a table called movies that have an imdb_rating between 7 and 8

In this statement, the BETWEEN operator is being used to filter the result set to only include movies with year s between 1990 up to, and including 1999, describes BETWEEN as being upper-bound inclusive.

So, then why is SELECT * FROM movies WHERE name BETWEEN 'D' AND 'G'; the correct solution to the first problem. If it was up to and including F, it would be.

SELECT * FROM movies WHERE name BETWEEN 'D' AND 'F';

The assignment is; Using the BETWEEN operator, write a query that selects all information about movies whose name begins with the letters ‘D’, ‘E’, and ‘F’.

Even easier is simply using either greater than or less than operators. IE

WHERE name >= 'W'

So think about what it would mean to be inclusive when looking at a string of text. The BETWEEN keyword is indeed inclusive, but when you include an upper bound of 'F' that means that everything up to and including 'F' would be included. However, including 'F' does not mean including 'Farm' or any other word that begins with 'F'. Since 'Farm' > 'F', BETWEEN being inclusive of its upper bound of 'F' does not also include other words beginning with 'F'.

In the previous lesson, we learn that we can use wildcards to select entries or records that begin with a certain letter/phrase (e.g., ‘A%’ or ‘%man%’ to find records that start with ‘A’ or that have ‘man’ somewhere in them). Why doesn’t BETWEEN need to use this syntax too? Is it just inferred because ranges imply that entries are consecutive?