Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: SQL Server
Expertise: Beginner
Mar 24, 1997

Querying a List

Question:
I've been trying to construct a query on the database to see if the value in a particular field matches a long list of correct answers. For example, I would like to pull out all FCODE values which match either 2, 5, 20, or any value between 10 and 15. I've tried:
SELECT * FROM Db WHERE fcode=2 OR fcode=5 OR 
     (fcode>=10 AND fcode<=15) OR fcode=20;
But this doesn't work. One would expect that the brackets or a similar structure would be necessary to maintain the proper mathematical order. As an alternative, I tried doing it the longer way by doing the following:
SELECT * FROM Db 
     WHERE fcode IN (2,5,10,11,12,13,14,15,20);
This is undesirable because I have a large amount of numbers. Also, it seems to crash when I do get a large number of entries. Do you have any ideas?

Answer:
The longer format statement you showed in your example using the IN clause usually is the preferred course for shorter lists of possibilities. For cases where the list is long, the best alternative is usually to create a table that contains the long list, then construct a subquery:

SELECT * FROM Db 
     WHERE fcode IN (SELECT fcode FROM Code);
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date