3

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

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
4

2 回答 2

6

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 等效于 Postgres 的 DISTINCT ON?了解如何在 Oracle 中执行此操作。

于 2012-11-01T09:35:21.253 回答
1

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

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

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

但我不建议依赖这个。你需要重新考虑你正在使用的逻辑。

于 2012-11-01T09:31:33.097 回答