在查询中获取唯一结果

时间:2010-04-29 19:41:58

标签: sql sql-server tsql

我确信这对于t-sql专家来说非常简单。

我从表中得到以下结果

idMain  IdSecondary  TextValue
1       1            text1
1       2            text2
2       5            text3
2       6            text5

我想只获得idMain的第一次出现。

结果应该是这样的。

idMain  idSecondary  TextValue
1       1            text1
2       5            text3

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

您应该能够加入子查询,如下例所示。这假定“first”表示最低idSecondary

SELECT t.idMain, sub_t.minSecondary, t.textValue
FROM   your_table t
JOIN   (SELECT   idMain, MIN(idSecondary) minSecondary
        FROM     your_table
        GROUP BY idMain) sub_t ON (sub_t.idMain = t.idMain);

答案 1 :(得分:0)

取决于“ first ”的含义。通常这个词会暗示日期时间或时钟顺序,但是你的表中没有日期或日期时间字段......

所以你必须澄清“第一”的意思

如果你没有在表中存储一些值,它可以告诉查询处理器如何命令任何两个记录来区分你对另一个记录的“第一个”的意思,那么你就不走运了。 ...

假设你确实有这样一个字段,(为了一个例子,让我们说它是IdSecondary - 因为你的样本结果看起来就是这样),那么你需要做的是

Select * From Table a
Where IdSecondary= (Select Min(IdSecondary)
                   From Table
                   Where idMain = a.idMain)