使用SELECT * FROM myTable
时,我会看到一个如下所示的列表:
A 473
A 234
B 752
C 136
但是,我不希望获得具有相同字母的多行。我只想获得带有某个字母的第一个条目,然后跳到下一个,如下所示:
A 473
B 752
C 136
现在,I know how to do this when I know what type of data I have。但是,我想编写一个SQL命令,无论表格是什么,都可以工作,也就是说,SELECT * FROM myTable WHERE duplicates of column1 are discarded
。
编辑:我真的不需要成为每个唯一column1值的第一个条目。任何行都可以。
编辑2:我非常希望sollution能够用于字符串和数字。
答案 0 :(得分:2)
您可以使用某种聚合函数来获取所需的column2值。例如:
SELECT Column1, MAX(Column2)
FROM MyTable
GROUP BY Column1
您可以阅读各种聚合函数及其执行的内容here。该链接特定于SQL Server,但同样的想法适用于许多DBMS。
答案 1 :(得分: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
。
答案 2 :(得分:-1)
你可以使用“rownum”功能
例如:
select * from table_name where rownum < 2;
o / p:它会显示第一行条目。