DISTINCT的意思是 省略选择字段中包含重复数据的记录。为了让查询结果包含它们,必须使 SELECT
语句中列举的每个字段值是唯一的。例如,雇员表可能有一些同姓的雇员。如果有两个记录的姓氏字段皆包含 Smith,则下列 SQL 语句只返回包含
Smith 的记录:
查出来的结果中有重复的CourseID,但每一条记录都不完全相同,使用DISTINCT也就不起作用了;
我希望查找的到唯一的CourseID,希望各位给些少帮助!
SELECT DISTINCT
LastName
FROM Employees;
如果省略 DISTINCT,则查询将返回两个包含 Smith 的记录。
如果 SELECT 子句包含多个字段,则对已给记录,所有字段值的组合必须是唯一的,而且结果中将包含这一组合。
如果查询使用 DISTINCT,则不能更新其输出,而且该输出也不会反映其它用户所作的一系列更改。
但是……
SELECT DISTINCT
LastName,CatalogID
FROM Employees inner join Catalogs;
查出来的结果可能是
Name CatalogID
olive
2
olive
3
smith
5
smith
6
我在项目中使用到的SQL也遇到过类似问题
SELECT TOP 5
TaokeCourses.CourseID,
TrainerID,
CompanyID,
TaokeCourses.Name ,
TargetCustomers ,
Target ,
CostTime ,
PublishType ,
ContactName ,
ContactEmail ,
ContactPhone ,
ContactAddress ,
ContactZipCode ,
CreateTime ,
UpdateTime ,
TaokeCourses.Deleted,
TaokeCatalogs.CatalogID,
TaokeCatalogs.ParentID,
TaokeCourses.TrainerID
FROM
TaokeCourses
INNER JOIN
(TaokeCatalogsTaokeCourses INNER JOIN TaokeCatalogs ON TaokeCatalogsTaokeCourses.CatalogID=TaokeCatalogs.CatalogID)
On TaokeCourses.CourseID = TaokeCatalogsTaokeCourses.CourseID
INNER JOIN TaokeAreasTaokeCourses On TaokeCourses.CourseID = TaokeAreasTaokeCourses.CourseID
INNER JOIN TaokeCourseTypesTaokeCourses On TaokeCourses.CourseID = TaokeCourseTypesTaokeCourses.CourseID
WHERE
-- TaokeCatalogs.ParentID=@ParentID AND
TaokeCourses.Deleted=0
ORDER BY
CreateTime
DESC
TaokeCourses.CourseID,
TrainerID,
CompanyID,
TaokeCourses.Name ,
TargetCustomers ,
Target ,
CostTime ,
PublishType ,
ContactName ,
ContactEmail ,
ContactPhone ,
ContactAddress ,
ContactZipCode ,
CreateTime ,
UpdateTime ,
TaokeCourses.Deleted,
TaokeCatalogs.CatalogID,
TaokeCatalogs.ParentID,
TaokeCourses.TrainerID
FROM
TaokeCourses
INNER JOIN
(TaokeCatalogsTaokeCourses INNER JOIN TaokeCatalogs ON TaokeCatalogsTaokeCourses.CatalogID=TaokeCatalogs.CatalogID)
On TaokeCourses.CourseID = TaokeCatalogsTaokeCourses.CourseID
INNER JOIN TaokeAreasTaokeCourses On TaokeCourses.CourseID = TaokeAreasTaokeCourses.CourseID
INNER JOIN TaokeCourseTypesTaokeCourses On TaokeCourses.CourseID = TaokeCourseTypesTaokeCourses.CourseID
WHERE
-- TaokeCatalogs.ParentID=@ParentID AND
TaokeCourses.Deleted=0
ORDER BY
CreateTime
DESC
查出来的结果中有重复的CourseID,但每一条记录都不完全相同,使用DISTINCT也就不起作用了;
我希望查找的到唯一的CourseID,希望各位给些少帮助!