【问题标题】:How can I select all fields except for those with non-distinct values?如何选择除具有非不同值的字段之外的所有字段?
【发布时间】:2019-04-16 11:17:30
【问题描述】:

我有一个表格,代表已申请的人的数据。每个人有一个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

但是在任何给定时间我可能会或可能不会使用另外 20 个字段

有没有更简洁的方法来实现这种选择而不是那么冗长?

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    select distinct 更短:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 2012-03-20
      • 2013-08-26
      相关资源
      最近更新 更多