我有一张表格,代表申请者的数据。每个人都有一个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
但是在任何给定时间我可能会也可能不会使用二十多个字段
在没有那么冗长的情况下,有没有更短的方法来实现这种选择?
答案 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没有类似的概念。
您可以编写查询以将系统表中的列合并在一起。这样可以简化查询的编写,并有助于防止拼写错误。