您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

MySQL 2022/1/1 18:25:52 有406人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶