我如何选择除具有非唯一值的字段以外的所有字段?

时间:2018-11-13 15:19:15

标签: sql oracle plsql

我有一张表格,代表申请者的数据。每个人都有一个PERSON_ID,但可以有多个APP_ID。我想为表中所有不同的 people 的人选择APP_ID以外的所有列(因为其值不是不同的)。

我可以在select和group by子句中分别列出每个字段

这有效:

select PERSON_ID, FIRST,LAST,MIDDLE,BIRTHDATE,SEX,EMAIL,PRIMARY_PHONE from 
applications
where first = 'Rob' and last='Robot'
group by PERSON_ID,FIRST,LAST,MIDDLE,BIRTHDATE,SEX,EMAIL,PRIMARY_PHONE

但是在任何给定时间我可能会也可能不会使用二十多个字段

在没有那么冗长的情况下,有没有更短的方法来实现这种选择?

1 个答案:

答案 0 :(得分:0)

select distinct较短:

select distinct PERSON_ID, FIRST, LAST, MIDDLE, BIRTHDATE, SEX, EMAIL, PRIMARY_PHONE 
from applications
where first = 'Rob' and last = 'Robot';

但是您仍然必须列出一次列。

一些更现代的数据库支持except子句,使您可以从通配符列表中删除列。就我所知,Oracle没有类似的概念。

您可以编写查询以将系统表中的列合并在一起。这样可以简化查询的编写,并有助于防止拼写错误。