Need to edge out the competition for your dream job? Train for certifications today.
Experts Exchange Solution brought to you by
"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.
select distinct” is a rather dull animal with minimal decision making powers.
A good rule of thumb -- if you need a distinct list of values in a single column or two, DISTINCT is the way to go. But if your results "don't look right" or you see some duplicate rows and can't figure out why, do NOT just add DISTINCT to your SELECT to "fix it" !! Step back, look at your joins, and re-write your query properly. Even worse, I've seen people simply add DISTINCT to all their SELECT's right from the start, to preemptively "avoid duplicates". Not good. (Side note: If you are a DISTINCT abuser, try adding meaningful primary keys to your tables).
Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.
I hate DISTINCT, too, at least improperly used. My rule is to use it at the lowest possible level. Example:
"Which products did each customer buy?"
SELECT DISTINCT p.ProductName, c.CustomerName
FROM Customers c, Products p, Orders o
WHERE o.CustomerId = c.CustomerId AND o.ProductId = p.ProductId
FROM Orders o
JOIN Customers c ON c.CustomerId = x.CustomerId
JOIN Products p ON p.CustomerId = x.CustomerId
--Much Much Better:
, COUNT(*) AS num_of
FROM Orders o
INNER JOIN Customers c
ON c.CustomerId = x.CustomerId
INNER JOIN Products p
ON p.CustomerId = x.CustomerId
Open in new window
Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.
From novice to tech pro — start learning today.
Premium members can enroll in this course at no extra cost.
Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.
Have a better answer? Share it in a comment.
Please enter a first name
Please enter a last name
Must be at least 4 characters long.
Join and Comment