我需要表中的所有列,但两列必须是不同的。 我使用了这个代码,但它检查了所有列,但我只需要其中两个将是不同的。 我怎么能满足这个要求?
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
答案 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
但我不建议依赖于此。您需要重新考虑您正在使用的逻辑。