devxlogo

Selecting with Distinct

Selecting with Distinct

Question:
I am trying to query a database with the following:

SELECT DISTINCT     SystemName, OwnerID, Location, Productver, StartDate,     EndDate, ProjectNameFROM DevicesORDER BY SystemName

I only want to have the DISTINCT affect the values for ‘SystemName’; I don’t care what the values for the other variable are. In other words, I wish to get a query with the duplicate values for SystemName being eliminated by using DISTINCT and also obtain the values for the remaining fields (OwnerID, Location, Productver, StartDate, EndDate, ProjectName),with their duplicates being irrelevant.

Do I need to do a subquery or a join or what? I’ve tried this but it doesn’t work:

SELECT OwnerID, Location, Productver, StartDate,     EndDate, ProjectName DISTINCT SystemNameFROM DevicesORDER BY SystemName

Answer:
As you found out, DISTINCT affects all the columns in the SELECT statement. In other words, it returns records where all the columns together are a unique value. You can’t specify a single distinct column plus any other columns, because if there were three records with the same value for SystemName, and varying values for the other columns, the query would not know which data to return for the remaining columns.

If the data is the same in the other columns, using DISTINCT shouldn’t be a problem. If the remaining columns have varying data and you want to return the additional columns, for example in a recordset, you could set the values in the query like this:

SELECT DISTINCT systemname, ownerid=null FROM devices

If you have this data:

systemname   ownerid     ----------   -------ABC          123ABC          123ABC          345DEF          NullDEF          456

The above query would return:

systemname   ownerid     ----------   -------ABC          NULLDEF          NULL

devx-admin

Share the Post: