【问题标题】:Use of DISTINCT with T-SQL Stored Procedure将 DISTINCT 与 T-SQL 存储过程一起使用
【发布时间】:2012-06-24 13:42:44
【问题描述】:

我正在运行以下存储过程,并且有一个类和日期表的连接。但是,在七条测试记录中,我在结果中得到了一条重复记录:

SELECT DISTINCT dbo.Classes.Title, dbo.Classes.ClassTime, dbo.Classes.Category, 
    dbo.Classes.SubCategory1, dbo.Classes.[Description],dbo.Classes.ContactName, 
    dbo.Classes.ContactPhone, dbo.Classes.Location, dbo.Classes.Room,
    dbo.Dates.StartDate
    FROM dbo.Classes INNER JOIN dbo.Dates ON dbo.Classes.ClassID = dbo.Dates.ClassID
    ORDER BY StartDate DESC 

【问题讨论】:

  • 这两行的 StartDates(或 ClassTime)很可能有所不同,但输出中不会显示差异。您可以通过从结果中删除 StartDate 列来验证这一点。
  • 利文,咖啡不够!您是对的,所以请将您的回复创建为答案,我会将其标记为正确:)
  • 去过那里。我会发布一个答案,谢谢。

标签: asp.net tsql stored-procedures


【解决方案1】:

这两行的Date 列中的一个很可能有所不同,但输出中不会显示差异。

您可以通过从结果中删除这些列来验证这一点。

SELECT DISTINCT dbo.Classes.Title
       , dbo.Classes.Category
       , dbo.Classes.SubCategory1
       , dbo.Classes.[Description]
       , dbo.Classes.ContactName
       , dbo.Classes.ContactPhone
       , dbo.Classes.Location
       , dbo.Classes.Room
FROM   dbo.Classes 
       INNER JOIN dbo.Dates ON dbo.Classes.ClassID = dbo.Dates.ClassID

另外,我建议您使用别名来提高语句的可读性。

SELECT DISTINCT dbo.Classes.Title
       , c.Category
       , c.SubCategory1
       , c.[Description]
       , c.ContactName
       , c.ContactPhone
       , c.Location
       , c.Room
FROM   dbo.Classes AS c
       INNER JOIN dbo.Dates AS d ON c.ClassID = d.ClassID

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2013-05-28
    • 2019-12-24
    • 1970-01-01
    • 2014-01-07
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多