首页
学习
活动
专区
圈层
工具
发布

postgre组
EN

Stack Overflow用户
提问于 2013-04-13 07:44:57
回答 2查看 209关注 0票数 1

我有一个这样的查询

代码语言:javascript
复制
select c.travelandsmile_id, c.name, c.surname
from customer c
where c.travelandsmile_id in
      (
        select s.travelandsmile_id
        from spent_kilometers s
        group by travelandsmile_id
        having count(s.kilometers)=1
      )

我想选择那些在表spent_kilometers中只显示一次且is大于30的记录。但是当我添加where s.kilometers > 30时,结果是错误的,并且根据第一次查询出现了更多的元组。

我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2013-04-13 08:11:35

代码语言:javascript
复制
select travelandsmile_id, c.name, c.surname
from
    customer c
    inner join
    spent_kilometers s using (travelandsmile_id)
where s.kilometers > 30
group by travelandsmile_id, c.name, c.surname
having count(*) = 1
票数 1
EN

Stack Overflow用户

发布于 2013-04-13 08:14:52

如果我没看错的话,您希望查找在spent_kilometers中有一条记录的所有客户,并且此记录必须具有约束s.kilometers > 30

这可以使用下面的SQL来完成。

代码语言:javascript
复制
select c.travelandsmile_id, c.name, c.surname
from customer c
where c.travelandsmile_id in 
     ( /* find all customers that have only one record in spent_kilometers */
        select c.travelandsmile_id
        from spent_kilometers s
        group by travelandsmile_id having count(travelandsmile_id) = 1
    )
 and c.travelandsmile_id in 
     ( /* find all customers that have s.kilometers > 30 */
        select c.travelandsmile_id
        from spent_kilometers s
        where s.kilometers > 30
    );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15982563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档