使用具有多列的select distinct,但所有列都是不同的

时间:2012-11-01 09:26:58

标签: sql oracle

我需要表中的所有列,但两列必须是不同的。 我使用了这个代码,但它检查了所有列,但我只需要其中两个将是不同的。 我怎么能满足这个要求?

select distinct a.personalId, a.fileId, a.name, a.surname, a.address from my_table a

如果我使用以下代码,我无法获得其他列:

select distinct a.personalId, a.fileId from my_table a

2 个答案:

答案 0 :(得分:5)

Postgresql支持DISTINCT ON语法:http://www.postgresql.org/docs/current/interactive/sql-select.html

select distinct on (a.personalId, a.fileId) a.personalId, a.fileId, a.name, a.surname, a.address
from my_table a

有关如何在Oracle中执行此操作,请参阅Oracle equivalent of Postgres' DISTINCT ON?

答案 1 :(得分:1)

如果其他列不同,会发生什么?数据库应该如何选择要显示的值?答案是“它不能”,因为它不能没有语法(这是一个逻辑错误)。

MySQL确实有一个扩展名,它会随机选择值。

select a.personalId, a.fileId, a.name, a.surname, a.address
from my_table a
group by a.personalId, a.fileId

但我不建议依赖于此。您需要重新考虑您正在使用的逻辑。