【问题标题】:postgresql distinct not workingpostgresql 不同的不工作
【发布时间】:2014-02-05 15:09:21
【问题描述】:

我正在使用以下代码从数据库中获取值:

但是当我编写这段代码时(测试看看问题出在哪里......)我注意到查询没有从数据库中获取不同的值: 这是查询

select distinct(ca.id)as id, acc.name as accName,pIsu.name as pareentIsu, sIsu.name as subIsu , dv.domain_value as contractType,acc.id as accId,dvct.domain_value as contractstatus
from contracts_account ca left join business_unit pIsu on ca.parent_isu_fk = pIsu.id
left join business_unit sIsu on ca.sub_isu_fk = sIsu.id
left join business_unit acc on ca.account_fk = acc.id
left join contracts con on con.contracts_account_fk = ca.id
left join domain_values dv on dv.id = con.contract_type_fk
left join domain_values dvct on dvct.id = con.contract_status_fk
where ca.id is not null and con.contract_type_fk in ( 4466079 ) order by ca.id

这个查询根本没有返回我'Distinct Id'
我究竟做错了什么? 我正在使用 postgres 8.2

【问题讨论】:

  • Select distinct col1, col2, col3 ... 不会只返回不同的 col1 值,它会返回不同的 col1 + col2 + col3 组合

标签: sql database postgresql select postgresql-8.4


【解决方案1】:

您是否正在尝试使用 PostgreSQL 的 DISTINCT ON 语法?

http://www.postgresql.org/docs/current/static/sql-select.html#SQL-DISTINCT

即。错过了?

【讨论】:

    【解决方案2】:

    您的查询被解释为:

    select distinct (ca.id) as id, acc.name as accName, . . .
    

    这是一个标准的distinct 声明。如果您希望每个 ca.id 仅包含第一行中的值(基于 order by),请使用 distinct on

    select distinct on (ca.id) ca.id, acc.name as accName, . . .
    

    【讨论】:

      猜你喜欢
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      相关资源
      最近更新 更多