SQL-如何选择具有相同ID的多行中的第一行(或任何唯一行)?

SQL-如何选择具有相同ID的多行中的第一行(或任何唯一行)?,sql,ms-access,greatest-n-per-group,Sql,Ms Access,Greatest N Per Group,假设我有一个查询结果,如下所示: ID NAME Phone ---- ---- ----- 1 Bob 111-111-1111 1 Bob 222-222-2222 1 Bob 333-333-3333 2 Stan 555-555-5555 3 Mike 888-888-8888 3 Mike 777-777-7777 我只想返回每个ID值的单行实例。对于我来说,多行中的哪一行并

假设我有一个查询结果,如下所示:

ID    NAME    Phone
----  ----    -----
1     Bob     111-111-1111
1     Bob     222-222-2222
1     Bob     333-333-3333
2     Stan    555-555-5555
3     Mike    888-888-8888
3     Mike    777-777-7777
我只想返回每个ID值的单行实例。对于我来说,多行中的哪一行并不重要——第一行就可以了

因此,可能的结果是:

ID    NAME    Phone
----  ----    -----
1     Bob     111-111-1111
2     Stan    555-555-5555
3     Mike    888-888-8888

对于SQL Server[edit]和MS Access,您可以执行以下操作

SELECT [ID], [Name], MIN(Phone) as PhoneNumber
FROM PhoneNumbers
GROUP BY [ID], [Name]
这会回来的

ID    NAME    Phone
----  ----    -----
1     Bob     111-111-1111
2     Stan    555-555-5555
3     Mike    777-777-7777

您可能需要向表中添加某种类型的唯一键,这只是一个想法。

对于SQL Server[edit]和MS Access,您可以这样做

SELECT [ID], [Name], MIN(Phone) as PhoneNumber
FROM PhoneNumbers
GROUP BY [ID], [Name]
这会回来的

ID    NAME    Phone
----  ----    -----
1     Bob     111-111-1111
2     Stan    555-555-5555
3     Mike    777-777-7777

您可能需要向表中添加某种类型的唯一键,这只是一个想法。

如果您向我们提供T-SQL语句,该语句给出了您获得的第一个结果,以及一些如何重新编写以获得所需结果的信息,我们可能也可以在某个方向上为您提供帮助

如果您向我们提供T-SQL语句,该语句给出了您获得的第一个结果,并提供了一些信息,说明如何重新编写该语句以获得您想要的结果,那么我们也可能在某个方向上为您提供帮助

@Tom-现在进入2010年(是的,我很不好意思承认),但我的问题应该尽可能的笼统。呵呵。。。没有理由感到尴尬。有时,Access是作业的正确工具。:)@汤姆-现在进入2010年(是的,我不好意思承认),但实际上我的问题是要尽可能的笼统。呵呵。。。没有理由感到尴尬。有时,Access是作业的正确工具。:)谢谢这不是一个表,而是上一个查询的结果。我将很快尝试一下……Min()的替代方法有Max()、First()和Last()。后两种方法将根据排序顺序返回不同的数据。虽然需要使用MIN()语句聚合多个列,但如何使用多个列来实现这一点?我可能会把它全部写出来。谢谢。这不是一个表,而是上一个查询的结果。我将很快尝试一下……Min()的替代方法有Max()、First()和Last()。后两种方法将根据排序顺序返回不同的数据。虽然需要使用MIN()语句聚合多个列,但如何使用多个列来实现这一点?我可能会把它全部写出来。我想我认为这不重要,因为我可以通过多种不同的方式得出这个结果集。我真的只需要从这一点开始解决,我想我认为这不重要,因为我可以通过多种不同的方式得到这个结果集。我真的只需要从这一点开始解决。