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)上,您需要编写子查询,这些查询将使您将整个表与自身连接(示例),因此不建议这样做。