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

我试图完成下面的sql语句,但我希望它返回所有列,这是可能的吗?比如:

SELECT DISTINCT field1, * from table

推荐答案

你正在寻找一个小组:

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)上,您需要编写子查询,使您能够用自身(example)连接整个表,因此不推荐这样做.

Sql相关问答推荐

不可能在SQL MERGE子句中引发异常

替换条件中的单元格值

如何根据特定的内部json元素值过滤postgres查询结果?

对非RUST源代码字符串使用`stringify!`,例如SQL查询

我希望以正确的升序获取SQL结果.怎样才能得到它们?

有没有办法在Postgres中存储带有时区的时间戳,而不将其转换为UTC

查询页面推荐

基于是否具有某些数据的关联表覆盖SELECT语句中的列值

PostgreSQL:查找继承表中的特定记录属于哪个表

当active=1时,是否可以创建id为的唯一索引?

SQL中相同表内的VLOOKUP等价

如何获取每个组中最近的n条记录并将它们聚合成数组

使用in和and运算符过滤记录的条件

如何在 DAX 中通过 Window 函数应用订单

如何根据与 BigQuery 中另一个表的匹配更新一个表中的列?

SQL:如何从时间戳数据生成时间序列并计算不同事件类型的累计总和?

超过100名员工的连续行

如何从 2 个 SQLite 表构建嵌套对象?

面对来自以下两个代码的不同输出

如何找到特定时间间隔内的最大和最小日期?