4

使用时,SELECT * FROM myTable我得到一个如下所示的列表:

A    473
A    234
B    752
C    136

但是,我不想让多行具有相同的字母。我只想获取带有某个字母的第一个条目,然后跳到下一个,如下所示:

A    473
B    752
C    136

现在,当我知道我拥有什么类型的数据时,我就知道该怎么做了。但是,我想编写一个不管表是什么样子都可以工作的 SQL 命令,也就是说,类似于以下内容:SELECT * FROM myTable WHERE duplicates of column1 are discarded.

编辑:我真的不需要成为为每个唯一 column1 值选择的第一个条目。任何行都可以。

编辑 2:我非常希望该解决方案同时适用于字符串和数字。

4

3 回答 3

3

您可以使用某种聚合函数来获取您想要的 column2 的值。例子:

SELECT Column1, MAX(Column2)
FROM MyTable
GROUP BY Column1

您可以在此处阅读各种聚合函数以及它们的作用。该链接特定于 SQL Server,但同样的想法也适用于许多 DBMS。

于 2012-07-26T21:50:24.327 回答
1

您可以使用GROUP BY. SELECT column1 FROM myTable GROUP BY column1会工作:

A
B
C

如果您想要 column2,则需要选择一个聚合函数,例如MAX. SELECT column1,MAX(column2) FROM myTable GROUP BY column1

A    473
B    752
C    136

这将为每一行myTable提供一个给定column1的和最高的column2

于 2012-07-26T21:49:38.200 回答
-1

你可以使用函数“rownum”

例如:

select * from table_name where rownum < 2;

o/p:它将显示第一行条目。

于 2015-06-04T18:59:28.867 回答