【问题标题】:SQL Need to retrieve rows from a table "either but not both"SQL 需要从表中检索行“一个但不是两个”
【发布时间】:2015-01-07 02:09:38
【问题描述】:

我有一张用户和城市表,需要检索一个城市或另一个城市的用户行,但不能同时检索两者。

用户城市

----------

鲍勃·芝加哥

鲍勃·洛杉矶

查理·芝加哥

道格·洛杉矶

厄尼·洛安吉利斯

弗兰克·芝加哥

弗兰克洛杉矶

由于 Bob 和 Frank 都在这两个城市,我希望我的结果集是:

Charlie  Chicago  
Doug     Los Angeles  
Ernie    Los Angeles  

这就像一个“不存在”的 INNER JOIN,但我就是无法掌握 SQL 语法 (Oracle SQL)。救命!

【问题讨论】:

    标签: sql oracle inner-join


    【解决方案1】:

    试试这个:

    select * from tbl
    where "user" in
    (select "user" from tbl
     group by "user"
     having count(city) = 1);
    

    我们只使用一个子查询,它按用户名对数据进行分组,并只过滤掉那些出现一次的用户名。请注意,user 是保留字,因此最好将列名更改为 username

    【讨论】:

      猜你喜欢
      • 2020-04-06
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多