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()语句聚合多个列,但如何使用多个列来实现这一点?我可能会把它全部写出来。我想我认为这不重要,因为我可以通过多种不同的方式得出这个结果集。我真的只需要从这一点开始解决,我想我认为这不重要,因为我可以通过多种不同的方式得到这个结果集。我真的只需要从这一点开始解决。