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 https://stackoverflow.com/questions/6109894/how-to-efficiently-determine-changes-between-rows-using-sql/6110200#6110200),所以不推荐。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)