小编典典

SQL / mysql-选择不重复/唯一,但返回所有列?

sql

SELECT DISTINCT field1, field2, field3, ......   FROM table

我正在尝试完成以下sql语句,但我希望它返回所有列,这可能吗?就像是:

SELECT DISTINCT field1, * from table

阅读 333

收藏
2021-04-10

共1个答案

小编典典

您正在寻找一个分组依据:

select *
from table
group by field1

有时可以用一个独特的on语句来编写:

select distinct on field1 *
from table

但是,在大多数平台上,以上两种方法都不起作用,因为未指定其他列上的行为。(如果您正在使用MySQL,第一个可以在MySQL中使用。)

您可以获取不同的字段,并坚持每次选择一个任意行。

在某些平台(例如PostgreSQL,Oracle,T-SQL)上,可以直接使用窗口函数来完成此操作:

select *
from (
   select *,
          row_number() over (partition by field1 order by field2) as row_number
   from table
   ) as rows
where row_number = 1

在其他(MySQL,SQLite)上,您需要编写子查询,这些查询将使您将整个表与自身连接(示例),因此不建议这样做。

2021-04-10