小编典典

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

all

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

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

SELECT DISTINCT field1, * from table

阅读 67

收藏
2022-03-18

共1个答案

小编典典

您正在寻找一个组:

select *
from table
group by field1

有时可以用不同的 on 语句编写:

select distinct on field1 *
from table

然而,在大多数平台上,以上都不起作用,因为其他列上的行为是未指定的。(第一个在 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
2022-03-18