从连接结果中选择仅第一行

时间:2016-06-13 06:25:29

标签: sql-server

我有一个存储过程,我在两个表下面使用

Ticket Nav Group(Table) - 

Column:

Ticket Type ID
Ticket Nav Group Id 

Ticket Sorting(Table) - 

Column :

Ticket TypeId,
Nav GroupId,
Priority

我在这些表之间做了内连接。使用故障单类型Id

由于故障单类型ID和导航组ID和优先级不同,我发现了一些重复的行。

现在我的要求是我需要为每个故障单类型Id选择此结果中的第一个匹配行。

另外,我需要在结果中显示票证类型ID和优先级

2 个答案:

答案 0 :(得分:0)

虽然您正在寻找查询的解决方案,但我认为您应该返回并重新评估您的数据库结构。

有了这个结构:

Ticket Nav Group(Table) - 
{
Ticket TypeID
Ticket NavGroup Id 
}

Ticket Sorting(Table) - 
{
Ticket TypeId,
Nav GroupId,
Priority
}

你应该只有第二张表。否则你正在复制数据。

请提供有关数据库结构的更多详细信息。在你的问题和结构中也要更清楚。 TypeId是Type表中的外键吗?你为什么用第一张表中的两个单词和第二张表中的拼写单词拼写出来。

答案 1 :(得分:0)

如果第二个表中有多个Ticket TypeId,您可以像这样加入:

Select 
    a.[Ticket Type ID], a.[Ticket Nav Group Id], b.[Priority]
FROM 
    [Ticket Nav Group] a
INNER JOIN (
            SELECT [Ticket TypeId], MAX([Priority]) 
            FROM [Ticket Sorting]
            GROUP BY [Ticket TypeId]
        ) b 
        ON b.[Ticket TypeId] = a.[Ticket Type ID]

如果我理解正确,我认为你有桌面设计问题。