SELECT DISTINCT field1, field2, field3, ......
FROM table;
我正在尝试完成以下 SQL 语句,但我希望它返回 所有列。
这可能吗?
像这样的东西:
SELECT DISTINCT field1, *
FROM table;
原文由 aryaxt 发布,翻译遵循 CC BY-SA 4.0 许可协议
在这里其他地方找到了这个,但这是一个有效的简单解决方案:
WITH cte AS /* Declaring a new table named 'cte' to be a clone of your table */
(SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY val1 DESC) AS rn
FROM MyTable /* Selecting only unique values based on the "id" field */
)
SELECT * /* Here you can specify several columns to retrieve */
FROM cte
WHERE rn = 1
原文由 Michael Fever 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在寻找一个组:
有时可以用不同的 on 语句编写:
然而,在大多数平台上,上述两种方法都不起作用,因为其他列上的行为是未指定的。 (第一个在 MySQL 中有效,如果你正在使用的话。)
您可以获取不同的字段并坚持每次都选择一个任意行。
在某些平台(例如 PostgreSQL、Oracle、T-SQL)上,这可以直接使用窗口函数来完成:
在其他(MySQL、SQLite)上,您需要编写子查询,让您将整个表与自身连接起来( 示例),因此不推荐。